Rust初心者なのですが、From
トレイトを用いて型の変換を行う際に、以下の様に実装しました。
rust
1use std::convert::Fro 2 3#[derive(Debug)] 4struct Foo { 5 name: String, 6 address: String, 7 tel: i32, 8} 9 10#[derive(Debug)] 11struct Bar<'a> { 12 name: &'a String, 13} 14 15impl<'a> From<Foo> for Bar<'a> { 16 fn from(foo: Foo) -> Bar<'a> { 17 Bar { name: &foo.name } 18 } 19} 20 21fn main() { 22 let foo = Foo {name: "Foo".to_string(), address: "Tokyo".to_string(), tel: 1234567890}; 23 let bar = Bar::from(foo); 24 println!("{:?}", bar); 25}
しかし、タイトルにあるように:
bash
1Compiling playground v0.0.1 (/playground) 2error[E0515]: cannot return value referencing local data `foo.name` 3 --> src/main.rs:17:8 4 | 517 | Bar { name: &foo.name } 6 | ^^^^^^^^^^^^---------^^ 7 | | | 8 | | `foo.name` is borrowed here 9 | returns a value referencing data owned by the current function 10 11For more information about this error, try `rustc --explain E0515`. 12error: could not compile `playground` due to previous error
というエラーが出てしまいます。エラーから推測するに、foo.nameに関する所有権についてのエラーかと思われますが、こちらをエラーが無い様に実装する為のリファレンス等ご存知でしたらお伺いしたく投稿させていただきました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/09 12:28