는 그문자열을 포함하는 복사 가능 구조체를 정의하는 방법은 무엇입니까?
#[derive(Copy, Clone)]
enum Command {
Quit,
Error { msg: String },
}
컴파일러 같은 구조체가 Error
에 대한 복사 생성자를 생성 할 수 없습니다 불평합니다.
채널을 통해 다른 스레드로 전달할 수 있도록 복사 가능 구조체를 만들어야합니다. msg
가 i32
경우
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)
그것은 컴파일합니다. 그런 기본적인 유형이 String
으로 복사가 불가능하다는 것이 이상합니다.
'문자열'은 'Vec'과 같은 방식으로 '복사 가능'하지 않습니다. 둘 다 힙 할당 콘텐츠를 처리하므로'memcpy '로 안전하게 복사 할 수 없습니다. 책의 관련 페이지 : https://doc.rust-lang.org/book/strings.html –
볼 수는 있지만 객체를 채널에 전달해야하며 유형을 복사 할 수 있어야합니다. 이 자습서는 표지에서부터 읽으므로 잘 읽지 만 얕은 편입니다. –
@ DaneelS.Yaitskov 형식은 채널을 통과하기 위해 복사 할 수 없어야합니다 *. –