使用 #![no_std] 时如何导出 Copy?

How do I derive Copy when using #![no_std]?

我正在做一个使用 #![no_std] 的项目,我希望能够导出有用的特征,例如 CopyClone。我尝试将 pub use core::prelude::*; 添加到项目根目录和我实际想在其中使用它的文件。但是,任何 #[derive(Copy)] 的尝试都会导致

error: attempt to implement a nonexistent trait std::marker::Copy

我不明白我做错了什么。正在尝试添加

use core::marker::Copy

产生这个:

error: a type named Copy has already been imported in this module

#[derive] 在 #![no_std] 中损坏 pub mod std {pub use core::*;} 将修复它,它将 ::std:: 的实例替换为 ::core:: 允许您派生特征编译器认为 std 来自 core

您始终可以使用 impl:

实现标记特征
impl Copy for MyStruct {}

它只适用于标记特征,Clone 和其他类似特征仍然需要 deriving