Rust测试字符串的移动,Move
2023-12-13 05:33:52
代码创建了一个结构体,结构体有test1 字符串,还有指向字符串的指针。一共创建了两个。
然后我们使用swap 函数 交换两个结构体内存的内容。
最后如上图。相同的地址,变成了另外结构体的内容。注意看指针部分,还是指向原来的地址。然后我们修改test1 ,test2输出的时候就变了
struct Test {
a: String,
b: *const String,
}
impl Test {
fn new(txt: &str) -> Self {
Test {
a: String::from(txt),
b: std::ptr::null(),
}
}
fn init(&mut self) {
let self_ref: *const String = &self.a;
self.b = self_ref;
}
fn b(&self) -> &String {
unsafe {
&*(self.b)
}
}
}
fn main() {
let mut test1 = Test::new("test1");
test1.init();
let mut test2 = Test::new("test2");
test2.init();
println!("a:{},b:{}", test1.a, test1.b());
std::mem::swap(&mut test1, &mut test2);
test1.a = "xxxxx".to_string();
println!("a:{},b:{}", test2.a, test2.b());
}
运行结果:
文章来源:https://blog.csdn.net/qq_46506007/article/details/134885895
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!