Ответ: да, вы можете, при некоторых очень специфических условиях.Нужно ли вам это делать - это другое дело.
Вы можете определить реализацию отрицательной черты для другой черты, если черта, которую вы отрицаете:
- авто-черта.
- из текущего ящика.
Таким образом, будет работать следующее ( детская площадка ):
#![feature(optin_builtin_traits)]
auto trait Scary {}
trait ThreadThing { }
impl !Scary for ThreadThing {}
Но это не будет работать, если выпытались сделать:
impl !Send for ThreadThing {}
Или, если Scary
не был автоматической чертой.
Обратите внимание, однако, что в общем случае не должно быть необходимости отмечать черту !Send
в этом случае.Конкретные реализации черты будут помечены Send
или !Send
компилятором Rust на основе содержимого реализующей структуры.