Crate boow [] [src]

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.