allocator_api2

Trait SliceExt

Source
pub trait SliceExt<T> {
    // Required methods
    fn to_vec_in<A: Allocator>(&self, alloc: A) -> Vec<T, A>
       where T: Clone;
    fn repeat(&self, n: usize) -> Vec<T, Global>
       where T: Copy;

    // Provided method
    fn to_vec(&self) -> Vec<T, Global>
       where T: Clone { ... }
}
Expand description

Slice methods that use Box and Vec from this crate.

Required Methods§

Source

fn to_vec_in<A: Allocator>(&self, alloc: A) -> Vec<T, A>
where T: Clone,

Copies self into a new Vec with an allocator.

§Examples
#![feature(allocator_api)]

use std::alloc::System;

let s = [10, 40, 30];
let x = s.to_vec_in(System);
// Here, `s` and `x` can be modified independently.
Source

fn repeat(&self, n: usize) -> Vec<T, Global>
where T: Copy,

Creates a vector by copying a slice n times.

§Panics

This function will panic if the capacity would overflow.

§Examples

Basic usage:

assert_eq!([1, 2].repeat(3), vec![1, 2, 1, 2, 1, 2]);

A panic upon overflow:

// this will panic at runtime
b"0123456789abcdef".repeat(usize::MAX);

Provided Methods§

Source

fn to_vec(&self) -> Vec<T, Global>
where T: Clone,

Copies self into a new Vec.

§Examples
let s = [10, 40, 30];
let x = s.to_vec();
// Here, `s` and `x` can be modified independently.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<T> SliceExt<T> for [T]

Source§

fn to_vec_in<A: Allocator>(&self, alloc: A) -> Vec<T, A>
where T: Clone,

Source§

fn repeat(&self, n: usize) -> Vec<T, Global>
where T: Copy,

Implementors§