Expand description
which is used to store immutable references to values. This is useful for storing, for example, strings.
Imagine this as an alternative to Cow
with an additional, reference-counted
branch.
use oco_ref::Oco;
use std::sync::Arc;
let static_str = "foo";
let rc_str: Arc<str> = "bar".into();
let owned_str: String = "baz".into();
fn uses_oco(value: impl Into<Oco<'static, str>>) {
let mut value = value.into();
// ensures that the value is either a reference, or reference-counted
// O(n) at worst
let clone1 = value.clone_inplace();
// these subsequent clones are O(1)
let clone2 = value.clone();
let clone3 = value.clone();
}
uses_oco(static_str);
uses_oco(rc_str);
uses_oco(owned_str);
Enums§
- From
Utf8 Error - Error returned from
Oco::try_from
for unsuccessful conversion fromOco<'_, [u8]>
toOco<'_, str>
. - Oco
- “Owned Clones Once”: a smart pointer that can be either a reference, an owned value, or a reference-counted pointer. This is useful for storing immutable values, such as strings, in a way that is cheap to clone and pass around.