20 文法の基本 Chapter 1 fn main() { let name = inquire::Text::new("あなたのお名前は?").prompt().unwrap(); let user = User::new(name); let stocks = Item::default_stocks(); println!("{}", user); let _cart = inquire::MultiSelect::new("買いたい商品を選んでください", stocks).prompt(); println!("{}", user); } main関数
21 文法の基本 Chapter 1 let name = inquire::Text::new("あなたのお名前は?").prompt().unwrap(); let user = User::new(name); let stocks = Item::default_stocks(); letによる変数の定義と代入 「::」はモジュールや構造体などへのアクセス 「.」はメソッドへのアクセス (詳しくは後で説明)
41 所有権と借用 Chapter 2 error[E0382]: borrow of moved value: `user` --> src/chapter_2.rs:108:20 | 99 | let user = User::new(name); | ---- move occurs because `user` has type `User`, which does not implement the `Copy` trait ... 106 | buy(user, cart, stocks); | ---- value moved here 107 | 108 | println!("{}", user); | ^^^^ value borrowed here after move
47 所有権と借用 Chapter 2 error[E0382]: borrow of moved value: `user` --> src/chapter_2.rs:108:20 | 99 | let user = User::new(name); | ---- move occurs because `user` has type `User`, which does not implement the `Copy` trait ... 106 | buy(user, cart, stocks); | ---- value moved here 107 | 108 | println!("{}", user); | ^^^^ value borrowed here after move
54 所有権と借用 Chapter 2 error[E0594]: cannot assign to `user.wallet`, which is behind a `&` reference --> src/chapter_2.rs:105:5 | 95 | fn buy(user: &User, cart: Vec, stocks: &Vec) -> Result<(), Error> { | ----- help: consider changing this to be a mutable reference: `&mut User` ... 105 | user.wallet -= total_price; | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `user` is a `&` reference, so the data it refers to cannot be written