我想从一个 Rust 函数返回一个字符串,但我目前只看到的选项是返回可以修改的
那么,函数当前是否有任何方法可以将例如
String
。虽然这并不是错误的,但我很喜欢以不可变的形式返回一些字符串,例如错误描述。那么,函数当前是否有任何方法可以将例如
Result<Something, String>
返回的错误实际上以不可变的方式返回?在仍然返回类似于Str
兼容的内容的同时在类型本身中强制执行它是否可能?或者我应该停止担心并总是返回String
(像大多数std::io
函数一样)?
String
,你就返回了它的所有权,并且静态保证没有其他引用它。 - user395760some_processing(message); log(message);
。在Python、Java、Haskell等语言中,我确定消息没有被some_processing
修改。但是在Rust中就不一定了。即使本地代码具有所有权,第一个函数仍然可能搞砸它。 - viraptormessage
是一个字符串(String),你的代码将无法编译,因为message
将被移动到函数中。如果它是一个切片(slice),它是不可变的,所以你不能对它进行危险操作。some_processing()
修改其参数的唯一方法是通过可变引用传递:some_processing(&mut message)
,在这里你可以很容易地看到some_processing()
修改了它的参数。 - Vladimir Matveev