1 个不稳定版本
使用旧Rust 2015
0.1.0 | 2017年12月1日 |
---|
#26 in #impl-block
15KB
173 行
trait_derive是一个小的crate,它可以根据你的struct的impl块生成一个特性。这将在你需要为测试目的生成特性或想将现有代码转换为特性以实现解耦时节省重复。
要将它添加到你的项目中,请将以下行添加到你的Cargo.toml
trait_derive = "0.1.0"
目前,trait_derive需要你运行nightly Rust。希望在未来,当过程宏稳定时,这将会改变。
示例
使用这个crate看起来是这样的
#![feature(proc_macro)]
extern crate trait_derive;
use trait_derive::make_trait;
pub struct A;
#[make_trait] // This will generate a trait named 'TraitA' by default.
impl A {
pub fn hello_world(&self) {
println!("Hello, world!");
}
}
fn takes_trait(x: &TraitA) {
x.hello_world();
}
fn basic_usage() {
let a = A { };
takes_trait(&a);
}
#[make_trait(Database)] // This will generate a trait named 'Database'
impl A {
pub fn query(&self) -> u32 {
32
}
}
依赖
~1.5MB
~41K SLoC