7 releases (4 stable)
1.2.1 | Apr 19, 2020 |
---|---|
1.2.0 | Apr 18, 2020 |
0.1.1 | Jun 6, 2019 |
0.0.1 | Jun 6, 2019 |
#1221 in Rust patterns
2,923 downloads per month
Used in 2 crates
6KB
Shadow Clone
A macro to clone variables into the current scope shadowing old ones.
Help
If you run into any issues or need help with using shadow-clone
in your project please email incoming+efunb-shadow-clone-12722979-issue-@incoming.gitlab.com.
How to use
Add
shadow-clone = "1"
to your cargo.toml
under [dependencies]
and add
use shadow_clone::shadow_clone;
to your main file.
Examples
let s = "foo".to_string();
let c = move |x: i32| format!("{}{}", s, x);
let bar = s;
This will not compile as s
has been moved into the closure.
This issue can be solved with this macro.
use shadow_clone::shadow_clone;
let s = "foo".to_string();
{
shadow_clone!(s);
let c = move |x: i32| format!("{}{}", s, x);
}
let bar = s;
That expands to,
use shadow_clone::shadow_clone;
let s = "foo".to_string();
{
let s = s.clone();
let c = move |x: i32| format!("{}{}", s, x);
}
let bar = s;
You can also clone multiple variables separated by commas: shadow_clone!(foo, bar);
.
You can also bind a clone as mutable by prefixing with mut
: shadow_clone!(mut foo);
.
Docs
Warning
If you are viewing this from GitHub then this is a read only copy. Please contribute to the GitLab copy here.