← Rust

LESSON / MIXED

スマートポインタと共有所有権

スマートポインタと共有所有権を学び、実務での設計判断につなげます。

代表的な型

Box<T>はヒープ上の単独所有、Rc<T>は単一スレッドでの共有所有、Arc<T>は複数スレッドでの共有所有に使います。RefCell<T>は借用規則を実行時に検査する内部可変性です。

use std::{cell::RefCell,rc::Rc};
fn main(){
 let a=Rc::new(RefCell::new(0));
 let b=Rc::clone(&a);
 *a.borrow_mut()+=1;
 *b.borrow_mut()+=2;
 println!("{}",a.borrow());
}

共有可変状態は便利ですが、借用違反は実行時panicになります。借用範囲を短くし、不要なら通常の所有権・借用を選びます。

演習:共有カウンター

incは1増加、add xはx増加、getは現在値を出力します。Rc<RefCell<i64>>を使ってください。

コード提出フォーム

RUST

安全なサーバー側採点連携が未接続のため、現在は提出できません。

採点基盤準備中

公開テストケース

読み込み中…