本文简要介绍rust语言中 Struct std::cell::Cell
的用法。
用法
#[repr(transparent)]pub struct Cell<T> where T: ?Sized, { /* fields omitted */ }
一个可变的内存位置。
例子
在此示例中,您可以看到 Cell<T>
在不可变结构内启用突变。换句话说,它启用“interior mutability”。
use std::cell::Cell;
struct SomeStruct {
regular_field: u8,
special_field: Cell<u8>,
}
let my_struct = SomeStruct {
regular_field: 0,
special_field: Cell::new(1),
};
let new_value = 100;
// ERROR: `my_struct` is immutable
// my_struct.regular_field = new_value;
// WORKS: although `my_struct` is immutable, `special_field` is a `Cell`,
// which can always be mutated
my_struct.special_field.set(new_value);
assert_eq!(my_struct.special_field.get(), new_value);
有关更多信息,请参阅module-level documentation。
相关用法
- Rust Cell.as_slice_of_cells用法及代码示例
- Rust Cell.into_inner用法及代码示例
- Rust Cell.swap用法及代码示例
- Rust Cell.get_mut用法及代码示例
- Rust Cell.as_ptr用法及代码示例
- Rust Cell.new用法及代码示例
- Rust Cell.as_array_of_cells用法及代码示例
- Rust Cell.replace用法及代码示例
- Rust Cell.take用法及代码示例
- Rust Cell.get用法及代码示例
- Rust Cell.update用法及代码示例
- Rust Cell.from_mut用法及代码示例
- Rust Cell.set用法及代码示例
- Rust CStr.into_c_string用法及代码示例
- Rust Cursor.new用法及代码示例
- Rust Condvar.notify_all用法及代码示例
- Rust Cursor.remaining_slice用法及代码示例
- Rust Command.args用法及代码示例
- Rust Condvar.wait用法及代码示例
- Rust Chars.as_str用法及代码示例
- Rust CString.into_bytes用法及代码示例
- Rust CStr.from_bytes_with_nul用法及代码示例
- Rust Cow.is_owned用法及代码示例
- Rust Cow用法及代码示例
- Rust Condvar.wait_timeout用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Struct std::cell::Cell。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。