#macro #no-alloc

nightly no-std negative-impl

稳定Rust中的负特质实现

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 2020年11月17日

#77 in #macros

Download history 98/week @ 2024-05-03 721/week @ 2024-05-10 162/week @ 2024-05-17 92/week @ 2024-05-24 66/week @ 2024-05-31 117/week @ 2024-06-07 157/week @ 2024-06-14 15/week @ 2024-06-21 143/week @ 2024-07-12 167/week @ 2024-07-19 114/week @ 2024-07-26 88/week @ 2024-08-16

每月223次下载
用于rplc

Apache-2.0 OR MIT

19KB
131

negative-impl

crates.io docs.rs license msrv github actions

稳定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 Timpl 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.0MIT许可证下授权。

除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交的任何贡献,都应按上述方式双重许可,而无需任何额外的条款或条件。

依赖项

~270–720KB
~17K SLoC