Crate boow

Source
Expand description

§Borrowed-Or-oWned

Provide a Borrowed-Or-oWned smart pointer.

Alternative to Cow for which the Clone trait is not required for the encapsulated type.

Use this crate if you want something like Cow but your type cannot be cloned.

§How to use

extern crate boow;
use boow::Bow;

// This struct contains a type for which we cannot know at compile time
// whether it will be owned or borrowed.
struct MyStruct<'a> {
    borrowed_or_owned: Bow<'a, InnerStruct>,
}

struct InnerStruct {
    _stuff: String,
}

impl<'a> MyStruct<'a> {
    // Use borrowed value
    fn from_borrowed(inner: &'a InnerStruct) -> Self {
        Self { borrowed_or_owned: Bow::Borrowed(inner) }
    }

    // Use owned value
    fn from_owned(inner: InnerStruct) -> Self {
        Self { borrowed_or_owned: Bow::Owned(inner) }
    }
}

Enums§

Bow
Borrow-Or-oWned smart pointer.