2个版本
0.1.1 | 2020年4月2日 |
---|---|
0.1.0 | 2020年4月2日 |
在Rust模式中排名2049
每月下载量419
4KB
to_trait
提供了To
特质,该特质提供了类似于.into()
和.try_into()
的方法,但它们接受类型参数。特质看起来像这样
trait To {
fn to<T>(self) -> T where Self: Into<T>;
fn try_to<T>(self) -> Result<T, Self::Error> where Self: TryInto<T>;
}
并且你可以这样使用它
use to_trait::To;
let five_u64 = 5u32.to::<u64>();
let five_u8 = 5u32.to::<u8>().unwrap();
乍一看,这可能看起来不是很实用,但有时编译器无法推断出对.into()
的调用输出类型。这在方法链中很常见,例如,如果你调用.into().some_other_method()
,并且可能会相当讨厌。
理想的方案是我们能够将所需的输出类型作为方法的类型参数。不幸的是,因为Into<T>
将T
作为特质类型参数,我们在调用方法时无法提供它 - 提供类型参数的唯一方法是回退到通用函数调用语法,使用Into::<T>::into(..)
。
To
特质的方法本质上充当类型推断助手,允许你在使用方法调用语法的同时提供类型参数。此外,它们比原来的短两个字符 😄
许可
MIT