Progrust Library.

// dictionary

Box.

Box

Box<T> は、値をヒープに確保し、その参照をスタックに保有するスマートポインタです。スタックに収まらない大きな値や、型の大きさが実行時に決まる場合に使用します。

基本的な使用方法

fn main() {
    let x = Box::new(5);
    println!("{}", x);  // 5
}

Box は自動的にメモリを解放するため、手動でのメモリ管理は不要です。

再帰的なデータ型

#[derive(Debug)]
enum List {
    Cons(i32, Box<List>),
    Nil,
}

use List::{Cons, Nil};

fn main() {
    let list = Cons(1, Box::new(Cons(2, Box::new(Cons(3, Box::new(Nil))))));
    println!("{:?}", list);
}

トレイトオブジェクト

let shapes: Vec<Box<dyn Draw>> = vec![
    Box::new(circle),
    Box::new(rectangle),
];

Box<dyn Trait> はトレイトオブジェクトとして動的ディスパッチを実現します。

関連する型:Rc<T> (Reference Counting)(複数の所有権)、RefCell<T>(内部可変性)

この辞書が使われているページ

backlinks 2

  1. 辞書Rc<T> (Reference Counting)
  2. 辞書ジェネリクス(Generics)