即使文档中没有说明布尔值,为什么布尔值也是可复制的?

马修·大卫(Mathieu David)

我试图了解所有权和借用概念。起初,我认为一旦您理解它就非常简单。但...

fn main() {
    let a = 5;

    let _y = double(a);
    println!("{}", a);
}

fn double(x: i32) -> i32 {
    x * 2
}

起初,我希望它不会被编译,因为a它将被移至_y

我有点困惑,但是我发现我本来是对的,但那i32是该规则的例外,因为它实现了复制特征。

我查看Copy特性,据我了解,它们在底部列出了实现此特性的所有类型。

因此该bool类型不存在,因此我假设其默认行为是“移动”。但...

fn main() {
    let a = true;

    let _y = change_truth(a);
    println!("{}", a);
}

fn change_truth(x: bool) -> bool {
    !x
}

也不失败。

现在我很困惑。我发现该Clone特性似乎与复制特性密切相关。但是除非我错过了,否则他们不会在学习文档中真正提及它。

有人可以给我更多信息吗?

更新:

  1. 我已经在Rust存储库中提出了一个问题
  2. 我还提出了一些更改建议的请求请求
j

您的理解很明确,这似乎与文档有关。该文档没有显示Copy任何原始类型的实例,即使它们确实是Copy作为显示编译器认为bool的示例Copy,以下编译就可以了:

fn takes_copyable<T: Copy>(foo: T) {}

fn main() {
    takes_copyable(true);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么C和Objective-C都没有布尔值的格式说明符?

来自分类Dev

为什么说布尔值给定

来自分类Dev

为什么布尔值更改Java方法中的值

来自分类Dev

为什么我在React Native中对此布尔值有两个不同的值?

来自分类Dev

为什么没有ExpectedConditions方法返回布尔值以获取元素可见性?

来自分类Dev

为什么没有ExpectedConditions方法返回布尔值以获取元素可见性?

来自分类Dev

OracleDbType中的布尔值

来自分类Dev

JavaScript中的布尔值

来自分类Dev

尽管从文本字段输入了布尔值,但布尔值没有改变

来自分类Dev

为什么在布尔表达式中不隐式转换非布尔值?

来自分类Dev

在Elasticsearch上查找具有布尔值的文档

来自分类Dev

有什么理由在C ++中为布尔使用枚举而不是已经存在的布尔值吗?

来自分类Dev

有什么理由在C ++中为布尔使用枚举而不是已经存在的布尔值吗?

来自分类Dev

比较布尔值

来自分类Dev

更改布尔值?

来自分类Dev

IsFlush布尔值

来自分类Dev

重置布尔值?

来自分类Dev

useState与布尔值

来自分类Dev

布尔值是必需的

来自分类Dev

布尔值零

来自分类Dev

布尔值 字节

来自分类Dev

带有 ClientTemplate Kendo Grid 的可空布尔值

来自分类Dev

为什么布尔值需要是原子的?

来自分类Dev

为什么此查询导致布尔值而不是数字?

来自分类Dev

返回布尔值时,为什么要使用“ !!”

来自分类Dev

为什么for循环不直接接受布尔值?

来自分类Dev

Django:为什么NullBooleanField接受非布尔值答案?

来自分类Dev

为什么渲染json:返回NULL而不是布尔值

来自分类Dev

为什么总是获得相同的布尔值?