RUST中的这些行之间有什么区别?

时间:2019-10-11 20:09:12

标签: rust ownership

这两种情况之间有什么区别?我具有2种不同模型的相同功能,这对我来说有点令人困惑!

package com.shop.shop.security;

public class AuthenticationBean {

    private String message;

    public AuthenticationBean(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    @Override
    public String toString() {
        return String.format("HelloWorldBean [message=%s]", message);
    }
}

1 个答案:

答案 0 :(得分:0)

让我们从相似之处开始:它们都不编译,因为您无法获取本身未定义为&mut的对象的可变引用(mut)。

正确版本如下:

let mut my_str = String::from("ali");
let str2 = &mut my_str;
如果要获取对它的可变引用,则需要将

my_str定义为可变的,以便使第一行明确。

在第二行,仅当您要修改引用mut指向的内容时,str2的前缀str2才是必需的。只要您仅修改字符串的内容(而不更改要修改的字符串),就不需要它。