Rust返回“空”通用变量

jdg4fx2g  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(234)

我想有一个函数,让我从结果中提取信息。问题是如果失败了,返回什么(函数使用了一个泛型参数)。下面是我的代码:

fn check<T, E>(x: Result<T, E>) -> T {
    if let Ok(sk) = x {
        return sk;
    } else {
        println!("uh oh");
        return 0 as T;
    }
}

正如你所猜到的,它不起作用,我应该用什么来代替0 as T

bvn4nwqk

bvn4nwqk1#

如果你想返回类型的默认值(0代表数字,false代表布尔值,空字符串代表字符串,等等),你可以将它限制为T: Default并返回T::default()

fn check<T: Default, E>(x: Result<T, E>) -> T {
    if let Ok(sk) = x {
        return sk;
    } else {
        println!("uh oh");
        return T::default();
    }
}

但请注意,Result上有一个现有的方法,在Err的情况下返回默认值:unwrap_or_default().

相关问题