Anu*_*aki 0 generics types rust
我想将特定类型返回到泛型类型,都是内置类型,所以不能 impl From for u32 { ... }
fn fn1<T>() -> T {
let a = 123u64;
a as T
// ^^^^^^ an `as` expression can only be used to convert between primitive types or to coerce to a specific trait object
}
fn main() {
let a = fn1::<u32>();
dbg!(a);
}
Run Code Online (Sandbox Code Playgroud)
有什么好办法吗?
首先,您应该注意,您所做的从根本上来说是不安全的,因为您将较大的类型安装在较小的类型中。
然后,您应该使用特征来指定您的泛型函数适用于可以转换的类型:
use std::convert::{TryFrom, TryInto};
fn fn1<T: TryFrom<u64>>() -> T {
let a = 123u64;
a.try_into().unwrap_or_else(|_| {
panic!("maybe improve the behavior here");
})
}
fn main() {
let a = fn1::<u32>();
dbg!(a);
}
Run Code Online (Sandbox Code Playgroud)