在std::ops中有很多操作,但是没有简单的赋值。
我来自一个C++背景,这里有拷贝构造函数和赋值操作符重载,它们为您完成工作。我需要这样的东西。
发布于 2017-03-13 12:51:00
您不能重载分配。将变量从一个位置移动到另一个位置是Rust所有权语义的一个核心组件,并且不会被夸大。
另一个答案建议您自定义实现Copy特性。这是没有意义的,因为https://doc.rust-lang.org/std/marker/trait.Copy.html
pub trait Copy: Clone { }您可以为类型实现Clone,但是要使用clone,必须显式地调用它:
let foo = bar.clone();实际的分配仍然只是将位从右边复制到左边,唯一的区别是您不放弃对bar的所有权。
--如果您的类型可以通过简单地复制位来复制,那么实现Copy是合适的。如果可以通过执行某种函数来复制,那么实现Clone是合适的。我不知道在任何给定的类型赋值时隐式执行代码的方法(我认为这是一个,好事,)。
https://stackoverflow.com/questions/37377250
复制相似问题