Nur*_*yev 3 terminology reference rust
这是我的最小可复制代码(操场):
struct MyStruct {
my_string: String,
}
fn accepts_string(my_string: String) {
println!("my_string: {}", my_string)
}
fn accepts_struct_reference(my_struct: &MyStruct) {
accepts_string(my_struct.my_string);
}
fn main() {
let my_struct = MyStruct {
my_string: String::from("hi"),
};
accepts_struct_reference(&my_struct);
}
Run Code Online (Sandbox Code Playgroud)
产生:
struct MyStruct {
my_string: String,
}
fn accepts_string(my_string: String) {
println!("my_string: {}", my_string)
}
fn accepts_struct_reference(my_struct: &MyStruct) {
accepts_string(my_struct.my_string);
}
fn main() {
let my_struct = MyStruct {
my_string: String::from("hi"),
};
accepts_struct_reference(&my_struct);
}
Run Code Online (Sandbox Code Playgroud)
我相信我理解为什么会发生此错误:accepts_string尝试将字符串从结构中移开。
为什么将该参考称为shared参考?与谁共享?这个形容词是否意味着存在非共享的引用?如果是,它们是什么样的?
这是区分可变引用和不可变引用的另一种方法。
生锈,有一个明显的区别:可以对数据进行任何共享(即使他们目前没有共享),或直接可变的,但不能是两个同时。这可以通过两种类型的引用来实现:
注意“直接可变”位。当然,有时可以通过共享引用来修改数据-如果数据本身允许的话;这就是所谓的内部可变性,它基于多种类型,例如Cell或Mutex,都在内部使用UnsafeCell-唯一允许在共享引用后面进行突变的类型。
可能在此处找到更多信息:https : //limpet.net/mbrubeck/2019/02/07/rust-a-unique-perspective.html
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |