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