수색…
소개
상자는 녹의 매우 중요한 부분이며 모든 녹스장은 자신의 존재와 사용 방법을 알아야합니다.
상자 만들기
stable Rust에서는 Box::new
함수를 사용하여 Box::new
를 만듭니다.
let boxed_int: Box<i32> = Box::new(1);
박스형 값 사용
Box는 Deref<Target=T>
구현하기 때문에 포함 된 값과 같은 박스형 값을 사용할 수 있습니다.
let boxed_vec = Box::new(vec![1, 2, 3]);
println!("{}", boxed_vec.get(0));
박스형 값에 패턴 매치를하려면 수동으로 상자를 역 참조해야 할 수 있습니다.
struct Point {
x: i32,
y: i32,
}
let boxed_point = Box::new(Point { x: 0, y: 0});
// Notice the *. That dereferences the boxed value into just the value
match *boxed_point {
Point {x, y} => println!("Point is at ({}, {})", x, y),
}
상자를 사용하여 재귀 열거 형 및 구조체 만들기
Box를 사용하지 않고 Rust에서 재귀 열거 형을 만들면 열거 형의 크기를 조정할 수 없다는 컴파일 타임 오류가 발생합니다.
// This gives an error!
enum List {
Nil,
Cons(i32, List)
}
열거 형이 정의 된 크기를 가지려면 재귀 적으로 포함 된 값이 상자에 있어야합니다.
// This works!
enum List {
Nil,
Cons(i32, Box<List>)
}
이것은 Rust가 List에 크기를 줄 수 있도록 Box가 항상 T가 무엇이든간에 같은 크기를 가지기 때문에 가능합니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow