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)
和往常一样,特征的文档列出了实现该特征的所有内容.(除非文档中有错误).