所有原始类型都实现了复制特征吗?

D. *_*aro 7 rust

Rust中的所有原始类型都实现了Copy特征吗?

知道这一点很有意思,因为这些知识肯定是彻底学习新编程语言的一部分.

She*_*ter 12

我们可以使用编译器来证明某些东西是否实现Copy.使用The Rust Programming Language中的原语列表:

fn is_copy<T: Copy>() {}

fn main() {
    is_copy::<bool>();
    is_copy::<char>();
    is_copy::<i8>();
    is_copy::<i16>();
    is_copy::<i32>();
    is_copy::<i64>();
    is_copy::<u8>();
    is_copy::<u16>();
    is_copy::<u32>();
    is_copy::<u64>();
    is_copy::<isize>();
    is_copy::<usize>();
    is_copy::<f32>();
    is_copy::<f64>();
    is_copy::<fn()>();
}
Run Code Online (Sandbox Code Playgroud)

这里没有涉及三种类型:

  • 元组
  • 数组

那是因为这些类型可以包含许多类型; 它们通过泛型参数化.只有&T当所有包含的值都是&mut T:

// OK
is_copy::<&String>();
is_copy::<*const String>();
is_copy::<*mut String>();
// Not OK
is_copy::<&mut i32>();
Run Code Online (Sandbox Code Playgroud)

和往常一样,特征的文档列出了实现该特征的所有内容.(除非文档中错误).

  • @ArtemGr guh,我真的以为现在已经修好了.我把这个问题联系起来了. (3认同)
  • 我没有看到 https://doc.rust-lang.org/std/marker/trait.Copy 中列出的原始类型(例如 https://doc.rust-lang.org/std/primitive.i64.html) .html,我错过了什么吗? (2认同)