own

Crates.ioown
lib.rsown
version0.1.1
sourcesrc
created_at2024-05-07 21:05:05.801451
updated_at2024-05-25 02:53:17.833127
descriptionWraps an owned or borrowed value.
homepagehttps://github.com/azriel91/own
repositoryhttps://github.com/azriel91/own
max_upload_size
id1233002
size16,756
Azriel Hoh (azriel91)

documentation

https://docs.rs/own/

README

🧺 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.1"

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.

Commit count: 8

cargo fmt