#arguments #traits #try-into #call

to_trait

一个具有类似于.into()和.try_into()方法的功能的特质,但它们接受类型参数

2个版本

0.1.1 2020年4月2日
0.1.0 2020年4月2日

Rust模式中排名2049

Download history 164/week @ 2024-04-07 214/week @ 2024-04-14 158/week @ 2024-04-21 258/week @ 2024-04-28 141/week @ 2024-05-05 205/week @ 2024-05-12 174/week @ 2024-05-19 159/week @ 2024-05-26 209/week @ 2024-06-02 217/week @ 2024-06-09 148/week @ 2024-06-16 150/week @ 2024-06-23 131/week @ 2024-06-30 137/week @ 2024-07-07 75/week @ 2024-07-14 76/week @ 2024-07-21

每月下载量419

MIT许可

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

无运行时依赖