Rust標準ライブラリが提供する std::convert::From トレイトは、任意の型に対して反射律(reflexive law)を満たす。Fromトレイトにより実装される std::convert::Into トレイトもまた反射律を満たす。[本記事はRust 1.12/Stable準拠]
struct T; let v1: T = From::from(T); // OK: T→Tへ変換 let v2: T = Into::into(T); // OK: T→Tへ変換
Rust標準ライブラリ(libcore/convert.rs)実装より引用。
impl<T, U> Into<U> for T where U: From<T> { fn into(self) -> U { U::from(self) } } impl<T> From<T> for T { fn from(t: T) -> T { t } }