#traits #alias #create #proc-macro-attributes #generic #internal #external

nightly macro generic_trait_alias

一个过程宏属性,可用于创建用于抽象的自定义类型别名

3个版本

0.1.2 2023年7月26日
0.1.1 2023年7月26日
0.1.0 2023年7月26日

1545过程宏

MIT 许可证

10KB
205

generic_trait_alias

包含一个过程宏属性,可用于创建具有更直观语法的类型别名(类似于处理结构别名的方式)

安装

cargo install generic_trait_alias

cargo add generic_trait_alias

示例

use generic_trait_alias::trait_alias;

// Define internal trait
pub trait Z {
    fn z(&self) -> u8;
}

// Creates a pub trait alias with internal and external traits
#[trait_alias]
pub type X = Z + Clone;

// Creates a private trait alias with internal and external traits
#[trait_alias]
type A = Z + Clone;

// Only works with public alias x
pub fn example_pub<T: X>(x: T) {
    println!("{}", x.z());
}

// Private functions can work with public or private alias
fn example<T: A>(x: A) {
    println!("{}", x.z());
}

限制

目前不支持组合泛型特性

无运行时依赖