Rust 变量值未移动

Rust 变量值未移动,rust,Rust,鉴于以下代码: 设x=5; 设y=x; 普林顿!(“{}”,x); 据我所知,当x的值被移动到y时,上面的代码最终会出错。但不是这样的。我已经用整数和字符串尝试了上面的代码,它只起作用。原语类型默认实现复制特征。所以,在这种情况下,x的值被复制到y中。尝试对任何未实现复制特性(如字符串)的对象执行相同的操作,您将遇到编译时错误。每次将一个变量分配给另一个变量时,创建一个副本的效率很低。但是,某些东西可以简单地复制。原语类型默认实现复制特性。所以,在这种情况下,x的值被复制到y中。尝试对任何未实

鉴于以下代码:

设x=5;
设y=x;
普林顿!(“{}”,x);

据我所知,当x的值被移动到y时,上面的代码最终会出错。但不是这样的。我已经用整数和字符串尝试了上面的代码,它只起作用。

原语类型默认实现复制特征。所以,在这种情况下,x的值被复制到y中。尝试对任何未实现复制特性(如字符串)的对象执行相同的操作,您将遇到编译时错误。每次将一个变量分配给另一个变量时,创建一个副本的效率很低。但是,某些东西可以简单地复制。

原语类型默认实现复制特性。所以,在这种情况下,x的值被复制到y中。尝试对任何未实现复制特性(如字符串)的对象执行相同的操作,您将遇到编译时错误。每次将一个变量分配给另一个变量时,创建一个副本的效率很低。但是,某些东西可以简单地复制。

实现复制的类型不会移动,而是复制。这回答了你的问题吗@Stargateur,感谢您的快速响应,我尝试了let x=“hello”,代码运行正常,正如您在评论中提到的,当我尝试let x=String::new(“hello”)时,代码没有运行。我想我这里出了什么问题。当它被设为x=“hello”时,它是一个str,它将被分配到内存中,并且它实现了复制特征,对吗?
“hello”
是一个
&静态str
它不是在“堆”中分配的,而是直接在“某处”取决于您的操作系统等。无论如何,请参考实现复制,因此是的,这项工作需要参考<代码>&str!=<代码>字符串==视图!=对象完美谢谢,实现复制的Stargateurtype不会被移动,而是被复制。这回答了你的问题吗@Stargateur,感谢您的快速响应,我尝试了let x=“hello”,代码运行正常,正如您在评论中提到的,当我尝试let x=String::new(“hello”)时,代码没有运行。我想我这里出了什么问题。当它被设为x=“hello”时,它是一个str,它将被分配到内存中,并且它实现了复制特征,对吗?
“hello”
是一个
&静态str
它不是在“堆”中分配的,而是直接在“某处”取决于您的操作系统等。无论如何,请参考实现复制,因此是的,这项工作需要参考<代码>&str!=<代码>字符串==视图!=对象完美谢谢,StargateurOkay谢谢,在哪里可以找到相关文档,就像我想知道哪些类型包含哪些特征一样?请参阅此文档。这可能很充实,但需要一些时间来阅读文档。它将澄清一些一直在调查的东西。只是被一些东西弄糊涂了。我想我明白了。再次感谢。好的,谢谢,在哪里可以找到这方面的文档,就像我想知道什么类型包含哪些特征一样?请参阅此文档。这可能很充实,但需要一些时间来阅读文档。它将澄清一些一直在调查的东西。只是被一些东西弄糊涂了。我想我明白了。再次感谢。