Trait allocator_api2::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.

Object Safety§

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§