代码之家  ›  专栏  ›  技术社区  ›  Fomalhaut

如何在方法中将结构的数据分配给self?

  •  0
  • Fomalhaut  · 技术社区  · 6 年前

    我正在尝试修改 self 临时存储到另一个变量中。在最后一步中,我想将变量中的所有数据复制到 .

    struct A {
        x: i32,
    }
    
    impl A {
        fn new() -> Self {
            Self { x: 0 }
        }
    
        fn change(&mut self) {
            let mut a = Self::new();
            a.x += 1;
    
            self = a; // How to copy data from a variable into self?
        }
    }
    

    我得到一个错误:

    error[E0308]: mismatched types
      --> src/lib.rs:14:16
       |
    14 |         self = a; // How to copy data from a variable into self?
       |                ^
       |                |
       |                expected &mut A, found struct `A`
       |                help: consider mutably borrowing here: `&mut a`
       |
       = note: expected type `&mut A`
                  found type `A`
    

    我试过了 self = &a self = &mut a ,它不起作用。我应该如何将数据复制到 a 在这一行?

    self.x += 1 . 在我的整个项目中,我对 A. 包括 自己 所以我需要严格复制最后一行。

    1 回复  |  直到 6 年前
        1
  •  5
  •   Shepmaster Tim Diekmann    6 年前

    self :

    *self = a;
    

    没有什么特别的 自己 任何 替换值的可变引用。