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

    pub trait Concat<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`[src]

🔬 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`[src]

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

Implementation of `[T]::concat`

Loading content...

## Implementors

### `impl<S: Borrow<str>> Concat<str> for [S]`[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: &Self) -> String`[src]

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

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

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

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

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

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