我想有一个函数,让我从结果中提取信息。问题是如果失败了,返回什么(函数使用了一个泛型参数)。下面是我的代码:
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?
0 as T
bvn4nwqk1#
如果你想返回类型的默认值(0代表数字,false代表布尔值,空字符串代表字符串,等等),你可以将它限制为T: Default并返回T::default():
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().
Result
Err
unwrap_or_default()
1条答案
按热度按时间bvn4nwqk1#
如果你想返回类型的默认值(0代表数字,
false
代表布尔值,空字符串代表字符串,等等),你可以将它限制为T: Default
并返回T::default()
:但请注意,
Result
上有一个现有的方法,在Err
的情况下返回默认值:unwrap_or_default()
.