7个版本
新 0.1.6 | 2024年8月23日 |
---|---|
0.1.5 | 2024年4月13日 |
0.1.4 | 2023年6月29日 |
0.1.3 | 2023年3月26日 |
0.0.0 |
|
#77 in #macros
每月223次下载
用于rplc
19KB
131 行
negative-impl
稳定Rust中的负特质实现。
此crate通过生成一个永远不会为真的条件来模拟不稳定功能negative_impls
。
用法
将以下内容添加到您的Cargo.toml
[dependencies]
negative-impl = "0.1"
示例
use negative_impl::negative_impl;
pub struct Type {}
#[negative_impl]
impl !Send for Type {}
#[negative_impl]
impl !Sync for Type {}
支持的特质
目前此crate仅支持auto traits。
限制
冲突实现
以下代码由于impl<T: Send> Trait for T
和impl Trait for Type
冲突而无法编译。
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`
可以使用不稳定功能negative_impls
编译上述代码。
#![feature(negative_impls)]
pub struct Type {}
impl !Send for Type {}
trait Trait {}
impl<T: Send> Trait for T {}
impl Trait for Type {}
许可证
根据您的选择,在Apache License, Version 2.0或MIT许可证下授权。
除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交的任何贡献,都应按上述方式双重许可,而无需任何额外的条款或条件。
依赖项
~270–720KB
~17K SLoC