std::slice::Concat - Rust
Description: API documentation for the Rust `Concat` trait in crate `std`.
Keywords: rust, rustlang, rust-lang, Concat

# [−][src]Trait std::slice::Concat

    pub trait Concat<Item> where
        Item: ?Sized, {
        type Output;
        fn concat(slice: &Self) -> Self::Output;
    }

🔬 This is a nightly-only experimental API. (`slice_concat_trait` #27747)

Helper trait for `[T]::concat`.

Note: the `Item` type parameter is not used in this trait, but it allows impls to be more generic. Without it, we get this error:

    error[E0207]: the type parameter `T` is not constrained by the impl trait, self type, or predica
       --> src/liballoc/slice.rs:608:6
        |
    608 | impl<T: Clone, V: Borrow<[T]>> Concat for [V] {
        |      ^ unconstrained type parameter

This is because there could exist `V` types with multiple `Borrow<[_]>` impls, such that multiple `T` types would apply:

    pub struct Foo(Vec<u32>, Vec<String>);

    impl std::borrow::Borrow<[u32]> for Foo {
        fn borrow(&self) -> &[u32] { &self.0 }
    }

    impl std::borrow::Borrow<[String]> for Foo {
        fn borrow(&self) -> &[String] { &self.1 }
    }

Run

## Associated Types

### `type Output`

🔬 This is a nightly-only experimental API. (`slice_concat_trait` #27747)

The resulting type after concatenation

Loading content...

## Required methods

### `fn concat(slice: &Self) -> Self::Output`

🔬 This is a nightly-only experimental API. (`slice_concat_trait` #27747)

Implementation of `[T]::concat`

Loading content...

## Implementors

### `impl<S> Concat<str> for [S] where
S: Borrow<str>,` [src]

Note: `str` in `Concat<str>` is not meaningful here. This type parameter of the trait only exists to enable another impl.

#### `type Output = String`

🔬 This is a nightly-only experimental API. (`slice_concat_trait` #27747)

#### `fn concat(slice: &[S]) -> String`[src]

🔬 This is a nightly-only experimental API. (`slice_concat_trait` #27747)

### `impl<T, V> Concat<T> for [V] where
T: Clone,
V: Borrow<[T]>,` [src]

#### `type Output = Vec<T>`

🔬 This is a nightly-only experimental API. (`slice_concat_trait` #27747)

#### `fn concat(slice: &[V]) -> Vec<T>ⓘ

### Notable traits for Vec<u8>

`impl Write for Vec<u8>`
`[src]

🔬 This is a nightly-only experimental API. (`slice_concat_trait` #27747)
Loading content...