#newtype #wrapper #i32 #require #ownership #don-t #trapper

无std trapper_macro

一个用于通过trapper轻松构建包装类型的进程宏crate

1 个稳定版本

1.0.0 2019年8月1日

#62#所有权

22 每月下载次数
2 个crate中(通过 trapper)使用

MIT 协议

5KB
65 代码行数

trapper

一个简单的Rust库,用于创建无需所有权即可使用的透明newtype。

示例

use trapper::{Wrapper, newtype};
newtype!(#[derive(PartialEq, Debug)] type NumberWrapper(i32));

fn foo(r: &i32, m: &mut i32) {
    let ref_wrapper: &NumberWrapper = NumberWrapper::wrap_ref(r);
    let mut_wrapper: &mut NumberWrapper = NumberWrapper::wrap_mut(m);
}

let mut wrapper = NumberWrapper::wrap(12);
*wrapper.unwrap_mut() = 13;

assert_eq!(wrapper, NumberWrapper::wrap(13));

依赖

~2MB
~45K SLoC