1 个不稳定版本
0.1.0 | 2023年6月3日 |
---|
#2603 在 Rust 模式
9KB
typechain
此包提供生成 Rust 中相关特例的链式宏。
示例
types.rs
use typechain::{chainlink, chain};
chainlink!(Currency => {
const usd_value: f64;
});
chain!(Fiat => {
@Currency
const usd_value: f64;
});
impl Fiat {
pub fn new(usd_value: f64) -> Self {
Self { usd_value }
}
}
chain!(Crypto => {
@Currency
const usd_value: f64;
});
impl Crypto {
pub fn new(usd_value: f64) -> Self {
Self { usd_value }
}
}
main.rs
use typechain::use_chains;
mod types;
use types::{Fiat, Crypto};
use_chains![types::Currency];
fn main() {
let usd = Fiat::new(1.0);
let btc = Crypto::new(10000.0);
let currencies: Vec<&Currency> = vec![&usd, &btc];
}
lib.rs
:
typechain
此包重新导出 typechain
宏。未来,它也可能包含用于处理 typechain
生成代码的其他实用工具。
用法
use typechain::{chainlink, chain};
chainlink!(Foo => {
const foo: u32;
});
chain!(Bar => {
@Foo
const foo: u32;
});
chain!(Baz => {
@Foo
const foo: u32;
});
let bar = Bar { foo: 42 };
let baz = Baz { foo: 97 };
let foos: Vec<&Foo> = vec![&bar, &baz];
依赖
~0.4–0.8MB
~19K SLoC