rustmax::static_assertions::_core::prelude::rust_2024

Trait Extend

Source
pub trait Extend<A> {
    // Required method
    fn extend<T>(&mut self, iter: T)
       where T: IntoIterator<Item = A>;

    // Provided methods
    fn extend_one(&mut self, item: A) { ... }
    fn extend_reserve(&mut self, additional: usize) { ... }
}
๐Ÿ”ฌThis is a nightly-only experimental API. (prelude_2024)
Expand description

Extend a collection with the contents of an iterator.

Iterators produce a series of values, and collections can also be thought of as a series of values. The Extend trait bridges this gap, allowing you to extend a collection by including the contents of that iterator. When extending a collection with an already existing key, that entry is updated or, in the case of collections that permit multiple entries with equal keys, that entry is inserted.

ยงExamples

Basic usage:

// You can extend a String with some chars:
let mut message = String::from("The first three letters are: ");

message.extend(&['a', 'b', 'c']);

assert_eq!("abc", &message[29..32]);

Implementing Extend:

// A sample collection, that's just a wrapper over Vec<T>
#[derive(Debug)]
struct MyCollection(Vec<i32>);

// Let's give it some methods so we can create one and add things
// to it.
impl MyCollection {
    fn new() -> MyCollection {
        MyCollection(Vec::new())
    }

    fn add(&mut self, elem: i32) {
        self.0.push(elem);
    }
}

// since MyCollection has a list of i32s, we implement Extend for i32
impl Extend<i32> for MyCollection {

    // This is a bit simpler with the concrete type signature: we can call
    // extend on anything which can be turned into an Iterator which gives
    // us i32s. Because we need i32s to put into MyCollection.
    fn extend<T: IntoIterator<Item=i32>>(&mut self, iter: T) {

        // The implementation is very straightforward: loop through the
        // iterator, and add() each element to ourselves.
        for elem in iter {
            self.add(elem);
        }
    }
}

let mut c = MyCollection::new();

c.add(5);
c.add(6);
c.add(7);

// let's extend our collection with three more numbers
c.extend(vec![1, 2, 3]);

// we've added these elements onto the end
assert_eq!("MyCollection([5, 6, 7, 1, 2, 3])", format!("{c:?}"));

Required Methodsยง

1.0.0 ยท Source

fn extend<T>(&mut self, iter: T)
where T: IntoIterator<Item = A>,

Extends a collection with the contents of an iterator.

As this is the only required method for this trait, the trait-level docs contain more details.

ยงExamples
// You can extend a String with some chars:
let mut message = String::from("abc");

message.extend(['d', 'e', 'f'].iter());

assert_eq!("abcdef", &message);

Provided Methodsยง

Source

fn extend_one(&mut self, item: A)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)

Extends a collection with exactly one element.

Source

fn extend_reserve(&mut self, additional: usize)

๐Ÿ”ฌThis is a nightly-only experimental API. (extend_one)

Reserves capacity in a collection for the given number of additional elements.

The default implementation does nothing.

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.

Implementorsยง

Sourceยง

impl Extend<(String, Value)> for rustmax::tera::Map<String, Value>

Sourceยง

impl Extend<(String, Value)> for rustmax::toml::map::Map<String, Value>

Sourceยง

impl Extend<Signal> for SigSet

Sourceยง

impl Extend<TokenTree> for rustmax::proc_macro2::TokenStream

1.30.0 ยท Sourceยง

impl Extend<TokenTree> for rustmax::proc_macro::TokenStream

1.0.0 ยท Sourceยง

impl Extend<char> for String

Sourceยง

impl Extend<u8> for BytesMut

1.28.0 ยท Sourceยง

impl Extend<()> for ()

Sourceยง

impl Extend<FileType> for FileType

Sourceยง

impl Extend<AtFlags> for nix::fcntl::AtFlags

Sourceยง

impl Extend<FallocateFlags> for nix::fcntl::FallocateFlags

Sourceยง

impl Extend<FdFlag> for FdFlag

Sourceยง

impl Extend<OFlag> for OFlag

Sourceยง

impl Extend<RenameFlags> for nix::fcntl::RenameFlags

Sourceยง

impl Extend<ResolveFlag> for ResolveFlag

Sourceยง

impl Extend<SealFlag> for SealFlag

Sourceยง

impl Extend<PollFlags> for PollFlags

Sourceยง

impl Extend<MemFdCreateFlag> for MemFdCreateFlag

Sourceยง

impl Extend<SaFlags> for SaFlags

Sourceยง

impl Extend<SfdFlags> for SfdFlags

Sourceยง

impl Extend<Mode> for nix::sys::stat::Mode

Sourceยง

impl Extend<SFlag> for SFlag

Sourceยง

impl Extend<FsFlags> for FsFlags

Sourceยง

impl Extend<ControlFlags> for ControlFlags

Sourceยง

impl Extend<InputFlags> for InputFlags

Sourceยง

impl Extend<LocalFlags> for LocalFlags

Sourceยง

impl Extend<OutputFlags> for OutputFlags

Sourceยง

impl Extend<WaitPidFlag> for WaitPidFlag

Sourceยง

impl Extend<AccessFlags> for AccessFlags

Sourceยง

impl Extend<CipherCtxFlags> for CipherCtxFlags

Sourceยง

impl Extend<CMSOptions> for CMSOptions

Sourceยง

impl Extend<OcspFlag> for OcspFlag

Sourceยง

impl Extend<Pkcs7Flags> for Pkcs7Flags

Sourceยง

impl Extend<ExtensionContext> for ExtensionContext

Sourceยง

impl Extend<ShutdownState> for ShutdownState

Sourceยง

impl Extend<SslMode> for SslMode

Sourceยง

impl Extend<SslOptions> for SslOptions

Sourceยง

impl Extend<SslSessionCacheMode> for SslSessionCacheMode

Sourceยง

impl Extend<SslVerifyMode> for SslVerifyMode

Sourceยง

impl Extend<X509CheckFlags> for X509CheckFlags

Sourceยง

impl Extend<X509VerifyFlags> for X509VerifyFlags

Sourceยง

impl Extend<CreateFlags> for CreateFlags

Sourceยง

impl Extend<ReadFlags> for ReadFlags

Sourceยง

impl Extend<WatchFlags> for WatchFlags

Sourceยง

impl Extend<Access> for Access

Sourceยง

impl Extend<AtFlags> for rustix::backend::fs::types::AtFlags

Sourceยง

impl Extend<FallocateFlags> for rustix::backend::fs::types::FallocateFlags

Sourceยง

impl Extend<MemfdFlags> for MemfdFlags

Sourceยง

impl Extend<Mode> for rustix::backend::fs::types::Mode

Sourceยง

impl Extend<OFlags> for OFlags

Sourceยง

impl Extend<RenameFlags> for rustix::backend::fs::types::RenameFlags

Sourceยง

impl Extend<ResolveFlags> for ResolveFlags

Sourceยง

impl Extend<SealFlags> for SealFlags

Sourceยง

impl Extend<StatVfsMountFlags> for StatVfsMountFlags

Sourceยง

impl Extend<StatxFlags> for StatxFlags

Sourceยง

impl Extend<DupFlags> for DupFlags

Sourceยง

impl Extend<FdFlags> for FdFlags

Sourceยง

impl Extend<ReadWriteFlags> for ReadWriteFlags

Sourceยง

impl Extend<MountFlags> for MountFlags

Sourceยง

impl Extend<MountPropagationFlags> for MountPropagationFlags

Sourceยง

impl Extend<UnmountFlags> for UnmountFlags

Sourceยง

impl Extend<IFlags> for IFlags

Sourceยง

impl Extend<XattrFlags> for XattrFlags

Sourceยง

impl Extend<Table> for ArrayOfTables

Sourceยง

impl Extend<CodegenConfig> for CodegenConfig

Sourceยง

impl Extend<Bytes> for BytesMut

Sourceยง

impl Extend<TokenStream> for rustmax::proc_macro2::TokenStream

1.30.0 ยท Sourceยง

impl Extend<TokenStream> for rustmax::proc_macro::TokenStream

Sourceยง

impl Extend<Modifiers> for Modifiers

1.52.0 ยท Sourceยง

impl Extend<OsString> for OsString

1.4.0 ยท Sourceยง

impl Extend<String> for String

Sourceยง

impl Extend<Error> for Error

1.2.0 ยท Sourceยง

impl<'a> Extend<&'a char> for String

1.0.0 ยท Sourceยง

impl<'a> Extend<&'a str> for String

Sourceยง

impl<'a> Extend<&'a u8> for BytesMut

1.52.0 ยท Sourceยง

impl<'a> Extend<&'a OsStr> for OsString

1.19.0 ยท Sourceยง

impl<'a> Extend<Cow<'a, str>> for String

1.52.0 ยท Sourceยง

impl<'a> Extend<Cow<'a, OsStr>> for OsString

1.2.0 ยท Sourceยง

impl<'a, K, V, A> Extend<(&'a K, &'a V)> for BTreeMap<K, V, A>
where K: Ord + Copy, V: Copy, A: Allocator + Clone,

Sourceยง

impl<'a, K, V, S> Extend<(&'a K, &'a V)> for IndexMap<K, V, S>
where K: Hash + Eq + Copy, V: Copy, S: BuildHasher,

Sourceยง

impl<'a, K, V, S> Extend<(&'a K, &'a V)> for AHashMap<K, V, S>
where K: Eq + Hash + Copy + 'a, V: Copy + 'a, S: BuildHasher,

1.4.0 ยท Sourceยง

impl<'a, K, V, S> Extend<(&'a K, &'a V)> for rustmax::std::collections::HashMap<K, V, S>
where K: Eq + Hash + Copy, V: Copy, S: BuildHasher,

Sourceยง

impl<'a, K, V, S, A> Extend<&'a (K, V)> for hashbrown::map::HashMap<K, V, S, A>
where K: Eq + Hash + Copy, V: Copy, S: BuildHasher, A: Allocator,

Inserts all new key-values from the iterator and replaces values with existing keys with new values returned from the iterator.

Sourceยง

impl<'a, K, V, S, A> Extend<(&'a K, &'a V)> for hashbrown::map::HashMap<K, V, S, A>
where K: Eq + Hash + Copy, V: Copy, S: BuildHasher, A: Allocator,

Inserts all new key-values from the iterator and replaces values with existing keys with new values returned from the iterator.

1.2.0 ยท Sourceยง

impl<'a, T, A> Extend<&'a T> for BinaryHeap<T, A>
where T: 'a + Ord + Copy, A: Allocator,

1.2.0 ยท Sourceยง

impl<'a, T, A> Extend<&'a T> for BTreeSet<T, A>
where T: 'a + Ord + Copy, A: Allocator + Clone,

1.2.0 ยท Sourceยง

impl<'a, T, A> Extend<&'a T> for LinkedList<T, A>
where T: 'a + Copy, A: Allocator,

1.2.0 ยท Sourceยง

impl<'a, T, A> Extend<&'a T> for VecDeque<T, A>
where T: 'a + Copy, A: Allocator,

1.2.0 ยท Sourceยง

impl<'a, T, A> Extend<&'a T> for Vec<T, A>
where T: Copy + 'a, A: Allocator,

Extend implementation that copies elements out of references before pushing them onto the Vec.

This implementation is specialized for slice iterators, where it uses copy_from_slice to append the entire slice at once.

Sourceยง

impl<'a, T, S> Extend<&'a T> for IndexSet<T, S>
where T: Hash + Eq + Copy + 'a, S: BuildHasher,

Sourceยง

impl<'a, T, S> Extend<&'a T> for AHashSet<T, S>
where T: 'a + Eq + Hash + Copy, S: BuildHasher,

1.4.0 ยท Sourceยง

impl<'a, T, S> Extend<&'a T> for rustmax::std::collections::HashSet<T, S>
where T: 'a + Eq + Hash + Copy, S: BuildHasher,

Sourceยง

impl<'a, T, S, A> Extend<&'a T> for hashbrown::set::HashSet<T, S, A>
where T: 'a + Eq + Hash + Copy, S: BuildHasher, A: Allocator,

Sourceยง

impl<A> Extend<<A as Array>::Item> for SmallVec<A>
where A: Array,

1.45.0 ยท Sourceยง

impl<A> Extend<Box<str, A>> for String
where A: Allocator,

1.56.0 ยท Sourceยง

impl<A, B, ExtendA, ExtendB> Extend<(A, B)> for (ExtendA, ExtendB)
where ExtendA: Extend<A>, ExtendB: Extend<B>,

Sourceยง

impl<B> Extend<bool> for BitVec<B>
where B: BitBlock,

Sourceยง

impl<B> Extend<usize> for BitSet<B>
where B: BitBlock,

Sourceยง

impl<Fut> Extend<Fut> for FuturesOrdered<Fut>
where Fut: Future,

Sourceยง

impl<Fut> Extend<Fut> for FuturesUnordered<Fut>

Sourceยง

impl<K, V> Extend<(K, V)> for InlineTable
where K: Into<Key>, V: Into<Value>,

Sourceยง

impl<K, V> Extend<(K, V)> for Table
where K: Into<Key>, V: Into<Item>,

1.0.0 ยท Sourceยง

impl<K, V, A> Extend<(K, V)> for BTreeMap<K, V, A>
where K: Ord, A: Allocator + Clone,

Sourceยง

impl<K, V, S> Extend<(K, V)> for IndexMap<K, V, S>
where K: Hash + Eq, S: BuildHasher,

Sourceยง

impl<K, V, S> Extend<(K, V)> for AHashMap<K, V, S>
where K: Eq + Hash, S: BuildHasher,

1.0.0 ยท Sourceยง

impl<K, V, S> Extend<(K, V)> for rustmax::std::collections::HashMap<K, V, S>
where K: Eq + Hash, S: BuildHasher,

Inserts all new key-values from the iterator and replaces values with existing keys with new values returned from the iterator.

Sourceยง

impl<K, V, S, A> Extend<(K, V)> for hashbrown::map::HashMap<K, V, S, A>
where K: Eq + Hash, S: BuildHasher, A: Allocator,

Inserts all new key-values from the iterator and replaces values with existing keys with new values returned from the iterator.

Sourceยง

impl<L, R, A> Extend<A> for Either<L, R>
where L: Extend<A>, R: Extend<A>,

1.0.0 ยท Sourceยง

impl<P> Extend<P> for PathBuf
where P: AsRef<Path>,

Sourceยง

impl<St> Extend<St> for SelectAll<St>
where St: Stream + Unpin,

Sourceยง

impl<T> Extend<(Option<HeaderName>, T)> for HeaderMap<T>

Sourceยง

impl<T> Extend<(HeaderName, T)> for HeaderMap<T>

1.0.0 ยท Sourceยง

impl<T, A> Extend<T> for BinaryHeap<T, A>
where T: Ord, A: Allocator,

1.0.0 ยท Sourceยง

impl<T, A> Extend<T> for BTreeSet<T, A>
where T: Ord, A: Allocator + Clone,

1.0.0 ยท Sourceยง

impl<T, A> Extend<T> for LinkedList<T, A>
where A: Allocator,

1.0.0 ยท Sourceยง

impl<T, A> Extend<T> for VecDeque<T, A>
where A: Allocator,

1.0.0 ยท Sourceยง

impl<T, A> Extend<T> for Vec<T, A>
where A: Allocator,

Sourceยง

impl<T, P> Extend<Pair<T, P>> for Punctuated<T, P>
where P: Default,

Sourceยง

impl<T, P> Extend<T> for Punctuated<T, P>
where P: Default,

Sourceยง

impl<T, S> Extend<T> for IndexSet<T, S>
where T: Hash + Eq, S: BuildHasher,

Sourceยง

impl<T, S> Extend<T> for AHashSet<T, S>
where T: Eq + Hash, S: BuildHasher,

1.0.0 ยท Sourceยง

impl<T, S> Extend<T> for rustmax::std::collections::HashSet<T, S>
where T: Eq + Hash, S: BuildHasher,

Sourceยง

impl<T, S, A> Extend<T> for hashbrown::set::HashSet<T, S, A>
where T: Eq + Hash, S: BuildHasher, A: Allocator,

Sourceยง

impl<T, const CAP: usize> Extend<T> for ArrayVec<T, CAP>

Extend the ArrayVec with an iterator.

Panics if extending the vector exceeds its capacity.

Sourceยง

impl<V> Extend<V> for Array
where V: Into<Value>,