Crate negative_impl
source ·Expand description
Negative trait implementations on stable Rust.
This crate emulates the unstable negative_impls
feature
by generating a trait implementation with a condition that will never be true.
§Usage
Add this to your Cargo.toml
:
[dependencies]
negative-impl = "0.1"
§Examples
use negative_impl::negative_impl;
pub struct Type {}
#[negative_impl]
impl !Send for Type {}
#[negative_impl]
impl !Sync for Type {}
§Supported traits
Currently this crate only supports auto traits.
§Limitations
§Conflicting implementations
The following code cannot compile due to impl<T: Send> Trait for T
and
impl Trait for Type
conflict.
ⓘ
use negative_impl::negative_impl;
pub struct Type {}
#[negative_impl]
impl !Send for Type {}
trait Trait {}
impl<T: Send> Trait for T {}
impl Trait for Type {}
error[E0119]: conflicting implementations of trait `Trait` for type `Type`:
--> src/lib.rs:60:1
|
14 | impl<T: Send> Trait for T {}
| ------------------------- first implementation here
15 | impl Trait for Type {}
| ^^^^^^^^^^^^^^^^^^^ conflicting implementation for `Type`
The above code can be compiled using the unstable negative_impls
feature.
#![feature(negative_impls)]
pub struct Type {}
impl !Send for Type {}
trait Trait {}
impl<T: Send> Trait for T {}
impl Trait for Type {}