Skip to main content

SliceExt

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".

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§