Trait geng::prelude::itertools::__std_iter::FromIterator

1.0.0 · source ·
pub trait FromIterator<A>: Sized {
    // Required method
    fn from_iter<T>(iter: T) -> Self
       where T: IntoIterator<Item = A>;
}
Expand description

Conversion from an Iterator.

By implementing FromIterator for a type, you define how it will be created from an iterator. This is common for types which describe a collection of some kind.

If you want to create a collection from the contents of an iterator, the Iterator::collect() method is preferred. However, when you need to specify the container type, FromIterator::from_iter() can be more readable than using a turbofish (e.g. ::<Vec<_>>()). See the Iterator::collect() documentation for more examples of its use.

See also: IntoIterator.

§Examples

Basic usage:

let five_fives = std::iter::repeat(5).take(5);

let v = Vec::from_iter(five_fives);

assert_eq!(v, vec![5, 5, 5, 5, 5]);

Using Iterator::collect() to implicitly use FromIterator:

let five_fives = std::iter::repeat(5).take(5);

let v: Vec<i32> = five_fives.collect();

assert_eq!(v, vec![5, 5, 5, 5, 5]);

Using FromIterator::from_iter() as a more readable alternative to Iterator::collect():

use std::collections::VecDeque;
let first = (0..10).collect::<VecDeque<i32>>();
let second = VecDeque::from_iter(0..10);

assert_eq!(first, second);

Implementing FromIterator for your type:

// 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);
    }
}

// and we'll implement FromIterator
impl FromIterator<i32> for MyCollection {
    fn from_iter<I: IntoIterator<Item=i32>>(iter: I) -> Self {
        let mut c = MyCollection::new();

        for i in iter {
            c.add(i);
        }

        c
    }
}

// Now we can make a new iterator...
let iter = (0..5).into_iter();

// ... and make a MyCollection out of it
let c = MyCollection::from_iter(iter);

assert_eq!(c.0, vec![0, 1, 2, 3, 4]);

// collect works too!

let iter = (0..5).into_iter();
let c: MyCollection = iter.collect();

assert_eq!(c.0, vec![0, 1, 2, 3, 4]);

Required Methods§

source

fn from_iter<T>(iter: T) -> Self
where T: IntoIterator<Item = A>,

Creates a value from an iterator.

See the module-level documentation for more.

§Examples
let five_fives = std::iter::repeat(5).take(5);

let v = Vec::from_iter(five_fives);

assert_eq!(v, vec![5, 5, 5, 5, 5]);

Object Safety§

This trait is not object safe.

Implementors§

source§

impl FromIterator<(Value, Value)> for geng::prelude::ron::Map

source§

impl FromIterator<(String, Value)> for geng::prelude::serde_json::Map<String, Value>

§

impl FromIterator<(String, Value)> for geng::prelude::toml::map::Map<String, Value>

source§

impl FromIterator<char> for String

§

impl FromIterator<char> for SmolStr

source§

impl FromIterator<u8> for bytes::bytes::Bytes

source§

impl FromIterator<u8> for bytes::bytes::BytesMut

§

impl FromIterator<u8> for Bytes

§

impl FromIterator<u8> for BytesMut

1.23.0 · source§

impl FromIterator<()> for ()

Collapses all unit items from an iterator into one.

This is more useful when combined with higher-level abstractions, like collecting to a Result<(), E> where you only care about errors:

use std::io::*;
let data = vec![1, 2, 3, 4, 5];
let res: Result<()> = data.iter()
    .map(|x| writeln!(stdout(), "{x}"))
    .collect();
assert!(res.is_ok());
source§

impl FromIterator<Extensions> for Extensions

1.45.0 · source§

impl FromIterator<Box<str>> for String

1.4.0 · source§

impl FromIterator<String> for String

§

impl FromIterator<String> for SmolStr

1.52.0 · source§

impl FromIterator<OsString> for OsString

§

impl FromIterator<Access> for Access

§

impl FromIterator<Access> for Access

§

impl FromIterator<AccessFlags> for AccessFlags

§

impl FromIterator<Anchor> for Anchor

§

impl FromIterator<Anchor> for Anchor

§

impl FromIterator<Api> for Api

§

impl FromIterator<AtFlags> for AtFlags

§

impl FromIterator<AtFlags> for AtFlags

§

impl FromIterator<AtFlags> for AtFlags

§

impl FromIterator<CapabilitiesSecureBits> for CapabilitiesSecureBits

§

impl FromIterator<Capability> for Capability

§

impl FromIterator<Capability> for Capability

§

impl FromIterator<Capability> for Capability

§

impl FromIterator<CapabilityFlags> for CapabilityFlags

§

impl FromIterator<Channels> for Channels

§

impl FromIterator<ConfigSurfaceTypes> for ConfigSurfaceTypes

§

impl FromIterator<ConstraintAdjustment> for ConstraintAdjustment

§

impl FromIterator<ContentHint> for ContentHint

§

impl FromIterator<ContentHint> for ContentHint

§

impl FromIterator<ContentHint> for ContentHint

§

impl FromIterator<ControlModes> for ControlModes

§

impl FromIterator<CreateFlags> for CreateFlags

§

impl FromIterator<CreateFlags> for CreateFlags

§

impl FromIterator<CreateFlags> for CreateFlags

§

impl FromIterator<CreateFlags> for CreateFlags

§

impl FromIterator<DisplayFeatures> for DisplayFeatures

§

impl FromIterator<DndAction> for DndAction

§

impl FromIterator<DupFlags> for DupFlags

§

impl FromIterator<DupFlags> for DupFlags

§

impl FromIterator<EfdFlags> for EfdFlags

§

impl FromIterator<EfdFlags> for EfdFlags

§

impl FromIterator<EpollCreateFlags> for EpollCreateFlags

§

impl FromIterator<EpollCreateFlags> for EpollCreateFlags

§

impl FromIterator<EpollFlags> for EpollFlags

§

impl FromIterator<EpollFlags> for EpollFlags

§

impl FromIterator<EventFlags> for EventFlags

§

impl FromIterator<EventFlags> for EventFlags

§

impl FromIterator<EventMask> for EventMask

§

impl FromIterator<EventMask> for EventMask

§

impl FromIterator<EventfdFlags> for EventfdFlags

§

impl FromIterator<EventfdFlags> for EventfdFlags

§

impl FromIterator<FallocateFlags> for FallocateFlags

§

impl FromIterator<FallocateFlags> for FallocateFlags

§

impl FromIterator<FallocateFlags> for FallocateFlags

§

impl FromIterator<FdFlag> for FdFlag

§

impl FromIterator<FdFlags> for FdFlags

§

impl FromIterator<FdFlags> for FdFlags

§

impl FromIterator<Flags> for Flags

§

impl FromIterator<Flags> for Flags

§

impl FromIterator<Flags> for Flags

§

impl FromIterator<FloatingPointEmulationControl> for FloatingPointEmulationControl

§

impl FromIterator<FloatingPointExceptionMode> for FloatingPointExceptionMode

§

impl FromIterator<FsFlags> for FsFlags

§

impl FromIterator<FutexFlags> for FutexFlags

§

impl FromIterator<InputModes> for InputModes

§

impl FromIterator<Kind> for Kind

§

impl FromIterator<Literal> for Seq

§

impl FromIterator<LocalModes> for LocalModes

§

impl FromIterator<MRemapFlags> for MRemapFlags

§

impl FromIterator<MapFlags> for MapFlags

§

impl FromIterator<MemFdCreateFlag> for MemFdCreateFlag

§

impl FromIterator<MembarrierQuery> for MembarrierQuery

§

impl FromIterator<MemfdFlags> for MemfdFlags

§

impl FromIterator<MemfdFlags> for MemfdFlags

§

impl FromIterator<MlockAllFlags> for MlockAllFlags

§

impl FromIterator<Mode> for Mode

§

impl FromIterator<Mode> for Mode

§

impl FromIterator<Mode> for Mode

§

impl FromIterator<Mode> for Mode

§

impl FromIterator<ModifiersState> for ModifiersState

§

impl FromIterator<MountFlags> for MountFlags

§

impl FromIterator<MountFlags> for MountFlags

§

impl FromIterator<MountPropagationFlags> for MountPropagationFlags

§

impl FromIterator<MountPropagationFlags> for MountPropagationFlags

§

impl FromIterator<MsFlags> for MsFlags

§

impl FromIterator<MsgFlags> for MsgFlags

§

impl FromIterator<OFlag> for OFlag

§

impl FromIterator<OFlags> for OFlags

§

impl FromIterator<OFlags> for OFlags

§

impl FromIterator<OutputModes> for OutputModes

§

impl FromIterator<PidfdFlags> for PidfdFlags

§

impl FromIterator<PidfdGetfdFlags> for PidfdGetfdFlags

§

impl FromIterator<PipeFlags> for PipeFlags

§

impl FromIterator<PipeFlags> for PipeFlags

§

impl FromIterator<PollFlags> for PollFlags

§

impl FromIterator<PollFlags> for PollFlags

§

impl FromIterator<PollFlags> for PollFlags

§

impl FromIterator<PortCap> for PortCap

§

impl FromIterator<PortType> for PortType

§

impl FromIterator<ProtFlags> for ProtFlags

§

impl FromIterator<ReadWriteFlags> for ReadWriteFlags

§

impl FromIterator<ReadWriteFlags> for ReadWriteFlags

§

impl FromIterator<RecvFlags> for RecvFlags

§

impl FromIterator<Remove> for Remove

§

impl FromIterator<RenameFlags> for RenameFlags

§

impl FromIterator<RenameFlags> for RenameFlags

§

impl FromIterator<RenameFlags> for RenameFlags

§

impl FromIterator<Resize> for Resize

§

impl FromIterator<ResolveFlags> for ResolveFlags

§

impl FromIterator<ResolveFlags> for ResolveFlags

§

impl FromIterator<SFlag> for SFlag

§

impl FromIterator<SealFlag> for SealFlag

§

impl FromIterator<SealFlags> for SealFlags

§

impl FromIterator<SealFlags> for SealFlags

§

impl FromIterator<SendFlags> for SendFlags

§

impl FromIterator<ShmOFlags> for ShmOFlags

§

impl FromIterator<SockFlag> for SockFlag

§

impl FromIterator<SocketFlags> for SocketFlags

§

impl FromIterator<SpeculationFeatureControl> for SpeculationFeatureControl

§

impl FromIterator<SpeculationFeatureState> for SpeculationFeatureState

§

impl FromIterator<SpliceFlags> for SpliceFlags

§

impl FromIterator<SpliceFlags> for SpliceFlags

§

impl FromIterator<StatVfsMountFlags> for StatVfsMountFlags

§

impl FromIterator<StatVfsMountFlags> for StatVfsMountFlags

§

impl FromIterator<StatxFlags> for StatxFlags

§

impl FromIterator<StatxFlags> for StatxFlags

§

impl FromIterator<Table> for ArrayOfTables

§

impl FromIterator<TaggedAddressMode> for TaggedAddressMode

§

impl FromIterator<ThreadNameSpaceType> for ThreadNameSpaceType

§

impl FromIterator<TimerfdFlags> for TimerfdFlags

§

impl FromIterator<TimerfdTimerFlags> for TimerfdTimerFlags

§

impl FromIterator<TimestampingFlag> for TimestampingFlag

§

impl FromIterator<TrancheFlags> for TrancheFlags

§

impl FromIterator<Transformations> for Transformations

§

impl FromIterator<Transient> for Transient

§

impl FromIterator<UnalignedAccessControl> for UnalignedAccessControl

§

impl FromIterator<UnmountFlags> for UnmountFlags

§

impl FromIterator<UnmountFlags> for UnmountFlags

§

impl FromIterator<UnshareFlags> for UnshareFlags

§

impl FromIterator<WaitOptions> for WaitOptions

§

impl FromIterator<WaitidOptions> for WaitidOptions

§

impl FromIterator<WatchFlags> for WatchFlags

§

impl FromIterator<WatchFlags> for WatchFlags

§

impl FromIterator<WatchMask> for WatchMask

§

impl FromIterator<WatchMask> for WatchMask

§

impl FromIterator<WindowButtons> for WindowButtons

§

impl FromIterator<WindowManagerCapabilities> for WindowManagerCapabilities

§

impl FromIterator<WindowState> for WindowState

§

impl FromIterator<XattrFlags> for XattrFlags

§

impl FromIterator<XattrFlags> for XattrFlags

§

impl FromIterator<xkb_state_component> for xkb_state_component

1.17.0 · source§

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

source§

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

§

impl<'a> FromIterator<&'a str> for SmolStr

source§

impl<'a> FromIterator<&'a u8> for bytes::bytes::Bytes

source§

impl<'a> FromIterator<&'a u8> for bytes::bytes::BytesMut

§

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

§

impl<'a> FromIterator<&'a String> for SmolStr

1.52.0 · source§

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

1.19.0 · source§

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

1.52.0 · source§

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

1.12.0 · source§

impl<'a> FromIterator<char> for Cow<'a, str>

1.12.0 · source§

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

1.12.0 · source§

impl<'a, 'b> FromIterator<&'b str> for Cow<'a, str>

source§

impl<'a, T> FromIterator<T> for Cow<'a, [T]>
where T: Clone,

§

impl<A> FromIterator<<A as Array>::Item> for ArrayVec<A>
where A: Array,

§

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

§

impl<A> FromIterator<<A as Array>::Item> for TinyVec<A>
where A: Array,

source§

impl<A, E, V> FromIterator<Result<A, E>> for Result<V, E>
where V: FromIterator<A>,

source§

impl<A, V> FromIterator<Option<A>> for Option<V>
where V: FromIterator<A>,

§

impl<F> FromIterator<F> for JoinAll<F>
where F: Future,

§

impl<F> FromIterator<F> for TryJoinAll<F>
where F: TryFuture,

§

impl<Fut> FromIterator<Fut> for geng::prelude::futures::prelude::future::SelectAll<Fut>
where Fut: Future + Unpin,

§

impl<Fut> FromIterator<Fut> for SelectOk<Fut>
where Fut: TryFuture + Unpin,

§

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

§

impl<Fut> FromIterator<Fut> for FuturesUnordered<Fut>

1.32.0 · source§

impl<I> FromIterator<I> for Box<[I]>

source§

impl<K, V> FromIterator<(K, V)> for geng::prelude::serde_json::Value
where K: Into<String>, V: Into<Value>,

source§

impl<K, V> FromIterator<(K, V)> for BTreeMap<K, V>
where K: Ord,

§

impl<K, V> FromIterator<(K, V)> for AHashMap<K, V>
where K: Eq + Hash,

§

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

§

impl<K, V> FromIterator<(K, V)> for Table
where K: Into<Key>, V: Into<Value>,

§

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

source§

impl<K, V, S> FromIterator<(K, V)> for geng::prelude::HashMap<K, V, S>
where K: Eq + Hash, S: BuildHasher + Default,

source§

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

§

impl<K, V, S, A> FromIterator<(K, V)> for HashMap<K, V, S, A>
where K: Eq + Hash, S: BuildHasher + Default, A: Default + Allocator,

source§

impl<P> FromIterator<P> for std::path::PathBuf
where P: AsRef<Path>,

§

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

§

impl<St> FromIterator<St> for geng::prelude::futures::prelude::stream::SelectAll<St>
where St: Stream + Unpin,

§

impl<T> FromIterator<(usize, T)> for Slab<T>

Create a slab from an iterator of key-value pairs.

If the iterator produces duplicate keys, the previous value is replaced with the later one. The keys does not need to be sorted beforehand, and this function always takes O(n) time. Note that the returned slab will use space proportional to the largest key, so don’t use Slab with untrusted keys.

§Examples


let vec = vec![(2,'a'), (6,'b'), (7,'c')];
let slab = vec.into_iter().collect::<Slab<char>>();
assert_eq!(slab.len(), 3);
assert!(slab.capacity() >= 8);
assert_eq!(slab[2], 'a');

With duplicate and unsorted keys:


let vec = vec![(20,'a'), (10,'b'), (11,'c'), (10,'d')];
let slab = vec.into_iter().collect::<Slab<char>>();
assert_eq!(slab.len(), 3);
assert_eq!(slab[10], 'd');
source§

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

§

impl<T> FromIterator<Steal<T>> for Steal<T>

source§

impl<T> FromIterator<T> for geng::prelude::serde_json::Value
where T: Into<Value>,

1.37.0 · source§

impl<T> FromIterator<T> for Arc<[T]>

§

impl<T> FromIterator<T> for Collection<T>
where T: HasId,

1.37.0 · source§

impl<T> FromIterator<T> for Rc<[T]>

source§

impl<T> FromIterator<T> for BinaryHeap<T>
where T: Ord,

source§

impl<T> FromIterator<T> for BTreeSet<T>
where T: Ord,

source§

impl<T> FromIterator<T> for LinkedList<T>

source§

impl<T> FromIterator<T> for VecDeque<T>

source§

impl<T> FromIterator<T> for Vec<T>

§

impl<T> FromIterator<T> for AHashSet<T>
where T: Eq + Hash,

§

impl<T, N> FromIterator<T> for GenericArray<T, N>
where N: ArrayLength<T>,

source§

impl<T, S> FromIterator<T> for geng::prelude::HashSet<T, S>
where T: Eq + Hash, S: BuildHasher + Default,

source§

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

§

impl<T, S, A> FromIterator<T> for HashSet<T, S, A>
where T: Eq + Hash, S: BuildHasher + Default, A: Default + Allocator,

source§

impl<T, const CAP: usize> FromIterator<T> for arrayvec::arrayvec::ArrayVec<T, CAP>

Create an ArrayVec from an iterator.

Panics if the number of elements in the iterator exceeds the arrayvec’s capacity.

§

impl<V> FromIterator<(usize, V)> for VecMap<V>

§

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

§

impl<V> FromIterator<V> for Value
where V: Into<Value>,