| Crates.io | own |
| lib.rs | own |
| version | 0.1.3 |
| created_at | 2024-05-07 21:05:05.801451+00 |
| updated_at | 2024-09-20 08:34:10.331765+00 |
| description | Wraps an owned or borrowed value. |
| homepage | https://github.com/azriel91/own |
| repository | https://github.com/azriel91/own |
| max_upload_size | |
| id | 1233002 |
| size | 17,216 |
Wraps an owned or borrowed value.
This allows you to hold either an owned or borrowed value, allowing your data type to be either 'static or 'temporary.
There is a OwnedOrRef::reborrow method that allows the value to be borrowed with a shorter lifetime.
Add the following to Cargo.toml
own = "0.1.3"
use own::OwnedOrRef;
fn print(name: OwnedOrRef<'_, String>) {
println!("{}", *name);
}
fn main() {
let name = String::from("owned");
print(name.into());
let name = &String::from("borrowed");
print(name.into());
}
use own::OwnedOrMutRef;
fn make_uppercase(name: &mut OwnedOrMutRef<'_, String>) {
name.make_ascii_uppercase();
}
fn main() {
let name = String::from("owned");
let mut owned = name.into();
make_uppercase(&mut owned);
assert_eq!("OWNED", *owned);
let name = &mut String::from("borrowed");
let mut borrowed = name.into();
make_uppercase(&mut borrowed);
assert_eq!("BORROWED", *borrowed);
}
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.