4 releases

0.1.3 Sep 20, 2024
0.1.2 Aug 31, 2024
0.1.1 May 25, 2024
0.1.0 May 7, 2024

#277 in Build Utils

Download history 51/week @ 2024-07-22 71/week @ 2024-07-29 74/week @ 2024-08-05 54/week @ 2024-08-12 52/week @ 2024-08-19 287/week @ 2024-08-26 52/week @ 2024-09-02 72/week @ 2024-09-09 190/week @ 2024-09-16 102/week @ 2024-09-23 43/week @ 2024-09-30 28/week @ 2024-10-07 104/week @ 2024-10-14 76/week @ 2024-10-21 63/week @ 2024-10-28 43/week @ 2024-11-04

293 downloads per month
Used in 21 crates (via interruptible)

MIT/Apache

12KB
177 lines

🧺 own

Crates.io docs.rs CI Coverage Status

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.

Usage

Add the following to Cargo.toml

own = "0.1.3"

Examples

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);
}

License

Licensed under either of

at your option.

Contribution

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.

Dependencies

~215KB