Rust测试字符串的移动,Move

代码创建了一个结构体,结构体有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());
}

运行结果:

相关推荐

  1. Rust move

    2023-12-09 09:02:04       33 阅读
  2. C++:移动语义(std::move

    2023-12-09 09:02:04       24 阅读
  3. Rust单元测试

    2023-12-09 09:02:04       33 阅读
  4. Rust: 关于Pin以及move前后分析

    2023-12-09 09:02:04       31 阅读
  5. Appium:强大移动应用测试工具

    2023-12-09 09:02:04       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-09 09:02:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-09 09:02:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-09 09:02:04       82 阅读
  4. Python语言-面向对象

    2023-12-09 09:02:04       91 阅读

热门阅读

  1. 2312d,d语言来绑定C++和rust

    2023-12-09 09:02:04       57 阅读
  2. 微服务和无服务器架构时代的持续测试

    2023-12-09 09:02:04       65 阅读
  3. centos7.9 安装sersync+rsync 服务器数据实时同步

    2023-12-09 09:02:04       64 阅读
  4. vue 批量下载文件,不走后端接口的方法

    2023-12-09 09:02:04       65 阅读
  5. nginx 的概念、高并发处理及详细参数配置

    2023-12-09 09:02:04       59 阅读
  6. Axios

    Axios

    2023-12-09 09:02:04      52 阅读
  7. es6 相关面试总结

    2023-12-09 09:02:04       60 阅读
  8. elasticsearch中LessThen遇到的坑

    2023-12-09 09:02:04       35 阅读
  9. python写数据进es中

    2023-12-09 09:02:04       56 阅读
  10. 代码随想录 62. 不同路径

    2023-12-09 09:02:04       55 阅读