3个版本
0.1.2 | 2022年6月19日 |
---|---|
0.1.1 | 2022年6月19日 |
0.1.0 | 2022年6月18日 |
#1445 in 进程宏
12KB
180 行
auto_ref
用于将引用参数 &T
替换为 impl AsRef<T>
或 impl Borrow<T>
用法
use auto_ref::{auto_ref, auto_borrow};
#[auto_ref]
fn example1(s: &str, t: &mut str) {
println!("{}, {}", s, t);
}
#[auto_borrow]
fn example2(s: &str, t: &mut str) {
println!("{}, {}", s, t);
}
#[auto_ref(s)]
#[auto_borrow(t)]
fn example3(s: &str, t: &str) {
println!("{}, {}", s, t);
}
上述代码转换为
fn example1(s: impl ::core::convert::AsRef<str>, t: impl ::core::convert::AsMut<str>) {
let s: &str = s.as_ref();
let t: &mut str = t.as_mut();
println!("{}, {}", s, t);
}
fn example2(s: impl ::core::borrow::Borrow<str>, t: impl ::core::borrow::BorrowMut<str>) {
let s: &str = s.borrow();
let t: &mut str = t.borrow_mut();
println!("{}, {}", s, t);
}
fn example3(s: impl ::core::convert::AsRef<str>, t: impl ::core::borrow::Borrow<str>) {
let t: &str = t.borrow();
let s: &str = s.as_ref();
println!("{}, {}", s, t);
}
依赖项
~1.5MB
~35K SLoC