pub trait VClone<'a>: VarLen {
    type Cloner: Initializer<Self>;
    fn vclone(&'a self) -> Self::Cloner;
}
Expand description

Support for cloning variable-length types.

Examples

use varlen::prelude::*;

let s_box: VBox<Str> = VBox::new(Str::copy("hello"));
let s: &Str = &*s_box;
let seq: Seq<Str> = seq![s.vclone(), s.vclone(), s.vclone()];
let mut iter = seq.iter();
assert_eq!(&iter.next().unwrap()[..], "hello");
assert_eq!(&iter.next().unwrap()[..], "hello");
assert_eq!(&iter.next().unwrap()[..], "hello");
assert!(iter.next().is_none());

Associated Types

An initializer that can produce a clone of an object of type Self.

Examples
use varlen::prelude::*;

let s_box: VBox<Str> = VBox::new(Str::copy("hello"));
let s: &Str = &*s_box;
let seq: Seq<Str> = seq![s.vclone(), s.vclone(), s.vclone()];
let mut iter = seq.iter();
assert_eq!(&iter.next().unwrap()[..], "hello");
assert_eq!(&iter.next().unwrap()[..], "hello");
assert_eq!(&iter.next().unwrap()[..], "hello");
assert!(iter.next().is_none());

Required methods

Returns an initializer that will clone self when run.

Examples
use varlen::prelude::*;

let s_box: VBox<Str> = VBox::new(Str::copy("hello"));
let s: &Str = &*s_box;
let seq: Seq<Str> = seq![s.vclone(), s.vclone(), s.vclone()];
let mut iter = seq.iter();
assert_eq!(&iter.next().unwrap()[..], "hello");
assert_eq!(&iter.next().unwrap()[..], "hello");
assert_eq!(&iter.next().unwrap()[..], "hello");
assert!(iter.next().is_none());

Implementors