TryFromTryInto

上一章我们看过 FromInto 特质—— Rust 中处理不会失败 (infallible) 类型转换的习惯接口。
但如果转换不一定成功呢?

我们对错误已经了解得够多,可以来看 FromInto可能失败 (fallible) 对应特质:TryFromTryInto

TryFromTryInto

TryFromTryInto 都定义在 std::convert 模块下,跟 FromInto 一样:

pub trait TryFrom<T>: Sized {
    type Error;
    fn try_from(value: T) -> Result<Self, Self::Error>;
}

pub trait TryInto<T>: Sized {
    type Error;
    fn try_into(self) -> Result<T, Self::Error>;
}

From/IntoTryFrom/TryInto 的主要区别在于后者返回 Result 类型。
这允许转换失败,返回错误而不是 panic。

Self::Error

TryFromTryInto 都有一个关联类型 Error。 这允许每个实现指定自己的错误类型,理想情况下选择最适合该转换的错误类型。

Self::Error 是一种引用特质本身定义的关联类型 Error 的方式。

对偶性 (Duality)

FromInto 一样,TryFromTryInto 是对偶特质。
如果你为某个类型实现了 TryFrom,就免费得到 TryInto

原文链接:英文原文