#convert #original #parameters #replace #try-from #macro #type

convert-params

一个宏,用于替换函数参数的类型,并使用TryFrom将它们转换为原始类型。

1 个不稳定版本

0.1.0 2023年7月5日

#15 in #try-from

MIT/Apache

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