私は、コンパイラが、それはError
のためのコピーコンストラクタを生成できないと文句を言いよう文字列を含むコピー可能な構造体を定義するには?
#[derive(Copy, Clone)]
enum Command {
Quit,
Error { msg: String },
}
のような構造体を持っています。
構造体をコピー可能にして、チャネルを別のスレッドに渡す必要があります。
error: the trait `Copy` may not be implemented for this type; variant `Error` does not implement `Copy` [E0205]
#[derive(Copy, Clone)]
^~~~~~~~~~~~~~~~~~~~~~
note: in this expansion of #[derive_Copy] (defined in src/main.rs)
msg
がi32
ある場合はコンパイルされます。そのような基本的な タイプがString
とコピーできないと奇妙に思えます。
'String'は' Vec'と同じように 'Copy'できません。どちらもヒープ割り当てコンテンツを扱うので、 'memcpy'を使って安全にコピーすることはできません。本の関連ページ:https://doc.rust-lang.org/book/strings.html –
私は見ていますが、私はオブジェクトをチャンネルに渡す必要があり、コピー可能なタイプが必要です。私はこのチュートリアルをカバーからカバーまで読んでいますが、それは浅いものです。 –
@ DaneelS.Yaitskovタイプは、チャネルを通過するためにコピー可能である必要はありません。 –