这个可能不是你想的原因。
线程传递需要Send这个trait,但这个trait是不能被显式impl的,大多数类型都满足Send。
要找问题,还是要看你的多线程代码是怎么写的,rust自己的写法是要求引用的lifetime是'static,你这个看着不像是'static。新的1.63版本或使用crossbeam写多线程才不需要是'static.
说到代价,&T和&[T] 的代价只是后者多保存了一个usize大小的数据,解引用时后者可能会多一个指针偏移(也可能被编译器优化掉了),基本都是可以忽略的代价。
【 在 Chear 的大作中提到: 】
: 这是我去年遇到的一个做法,当时没细探究,今天突然想起。
: 问题是这样的,结构体A需要包含一个内容content,类型是复合的T,例如T为Vec<HashSet<T1>>。
: 结构体A需要被实例化多次,例如a1 a2 an等。每个实例至少需要多线程安全,至少会被线程传递。
: ...................
--
FROM 183.192.17.*