- 主题:闭包move声明后,域外的变量仍然可以访问和修改,是否闭包的规
这个问题和堆、栈没有直接关系,有关系的是有没有实现Copy trait.
所有权转移是为了实现类型安全、内存安全,这是rust的核心特性。目前为止,在编译期间
解决内存安全问题,仅rust一家而已,这就是意义。
【 在 zhangxp024 的大作中提到: 】
: 什么栈可以接着用,堆就不能用。 搞出这一套所有权转移语法到底有什么意义。
--
FROM 116.237.127.*
对
【 在 zhangxp024 的大作中提到: 】
: 也就是说,整型12实现了所谓的copy trait, 字符串则没有实现copy trait?
--
FROM 116.237.127.*
你是问为啥基础类型自动实现Copy而字符串不实现Copy吗?
因为“传引用”,“移动所有权”这些操作在底层实现时其实是传递指针,64位程序里一个指针是8字节,基础类型大小是小于等于8字节的,所以不如直接copy了事,不会影响性能。
而字符串则没有这个特性,而且拷贝字符串可能是很影响性能的。
【 在 zhangxp024 的大作中提到: 】
: 那为什么编译器要这么做呢?而不是反过来?
: AI给我的copy trait的解释:
: 在Rust中,Copy trait 是一个标记 trait(marker trait),用于指示类型可以通过简单的位复制(bitwise copy)来复制值。当一个类型实现了 Copy trait 时,它的值在赋值、函数参数传递或返回时会自动进行拷贝,而不是移动所有权。
: ...................
--
FROM 116.237.127.*