1 个不稳定版本

0.1.0 2023年6月3日

#2603Rust 模式

MIT/Apache

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