我正在开发一个使用#![no_std]
的项目,我希望能够推导出有用的特性,例如Copy
和Clone
。我尝试将pub use core::prelude::*;
添加到项目根目录和我实际想要使用它的文件中。但是,#[derive(Copy)]
的任何尝试都会导致
错误:尝试实现不存在的特征std :: marker :: Copy
我不明白我做错了什么。试图添加
use core::marker::Copy
得出这个:
错误:已在此模块中导入名为Copy的类型
答案 0 :(得分:3)
#[derive]在#中被破坏![no_std] pub mod std {pub use core::*;}
将修复它,它将::std::
的实例替换为::core::
,允许您导出编译器认为属于的特征来自std
core
答案 1 :(得分:3)
您始终可以使用impl
实现标记特征:
impl Copy for MyStruct {}
它仅适用于标记特征,Clone
和其他类似特征仍然需要deriving
。