1 个不稳定版本
| 0.1.0 | 2023年7月5日 | 
|---|
#15 in #try-from
6KB
60 行
一个宏,用于替换函数参数的类型,并使用TryFrom将它们转换为原始类型。
这个crate最初的动机是用于与wasm-bindgen一起使用,以便一个函数可以。
示例
#[macro_use]
extern crate convert_params;
struct Orig {}
#[derive(Debug)]
struct Foo {}
impl TryFrom<Orig> for Foo {
    type Error = &'static str;
    fn try_from(_v: Orig) -> Result<Self, Self::Error> {
        Ok(Foo {})
    }
}
#[derive(Debug, PartialEq)]
struct Error {
    s: &'static str,
}
impl From<&'static str> for Error {
    fn from(s: &'static str) -> Self {
        Error { s }
    }
}
#[convert_args(_value1: Orig, _value2: Orig)]
fn example(i: u32, _value1: Foo, _value2: Foo) -> Result<(), Error> {
    Ok(())
}
fn main() {
    assert!(example(42, Orig {}, Orig {}).is_ok());
}
example to
fn example(i: u32, _value1: Orig, _value2: Orig) -> Result<(), Error> {
    let _value2 = {
        let _value2: Orig = _value2.into();
        <Foo as std::convert::TryFrom<_>>::try_from(_value2)?
    };
    let _value1 = {
        let _value1: Orig = _value1.into();
        <Foo as std::convert::TryFrom<_>>::try_from(_value1)?
    };
    Ok(())
}
依赖关系
~1.5MB
~35K SLoC