Rustで独自の型にFromを実装する

String::from() とか str.into() とかを自分で実装したい。これは From を実装することでできるようになる。

#[derive(Debug, PartialEq)]
struct A {
    foo: String,
}

#[derive(Debug, PartialEq)]
struct B {
    foo: String,
}

impl From<A> for B {
    fn from(a: A) -> Self {
        B {
            foo: a.foo.to_string(),
        }
    }
}

fn main() {
    let b_1: B = B::from(A { foo: "hoge".into() });
    let b_2: B = A { foo: "hoge".into() }.into();

    assert_eq!(b_1, b_2);
}

自分で作成した特定の構造体から特定の構造体を生み出したい時、これを知っておけば into() で生成できていいかなと思う。

https://doc.rust-lang.org/std/convert/trait.From.html

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA