typechain
This crate provides procedural macros for generating chains of related traits in Rust.
Example
types.rs
use ;
chainlink!;
chain!;
chain!;
main.rs
use use_chains;
use ;
use_chains!;
typechainThis crate provides procedural macros for generating chains of related traits in Rust.
types.rsuse 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.rsuse 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];
}