Trait druid::piet::cairo::glib::bitflags::_core::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) -> Selfwhere T: IntoIterator<Item = A>,

Creates a value from an iterator.

See the module-level documentation for more.

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]);

Implementors§

§

impl FromIterator<PathEl> for druid::piet::kurbo::BezPath

source§

impl FromIterator<char> for String

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());
§

impl FromIterator<PdfOutline> for PdfOutline

§

impl FromIterator<BindingFlags> for BindingFlags

§

impl FromIterator<FormatSizeFlags> for FormatSizeFlags

§

impl FromIterator<IOCondition> for IOCondition

§

impl FromIterator<KeyFileFlags> for KeyFileFlags

§

impl FromIterator<LogLevelFlags> for LogLevelFlags

§

impl FromIterator<LogLevels> for LogLevels

§

impl FromIterator<OptionFlags> for OptionFlags

§

impl FromIterator<ParamFlags> for ParamFlags

§

impl FromIterator<SignalFlags> for SignalFlags

§

impl FromIterator<SpawnFlags> for SpawnFlags

1.45.0 · source§

impl FromIterator<Box<str, Global>> for String

1.4.0 · source§

impl FromIterator<String> for String

1.52.0 · source§

impl FromIterator<OsString> for OsString

§

impl FromIterator<AccelFlags> for AccelFlags

§

impl FromIterator<AnchorHints> for AnchorHints

§

impl FromIterator<AppInfoCreateFlags> for AppInfoCreateFlags

§

impl FromIterator<ApplicationFlags> for ApplicationFlags

§

impl FromIterator<ApplicationInhibitFlags> for ApplicationInhibitFlags

§

impl FromIterator<AskPasswordFlags> for AskPasswordFlags

§

impl FromIterator<AxisFlags> for AxisFlags

§

impl FromIterator<BusNameOwnerFlags> for BusNameOwnerFlags

§

impl FromIterator<BusNameWatcherFlags> for BusNameWatcherFlags

§

impl FromIterator<CalendarDisplayOptions> for CalendarDisplayOptions

§

impl FromIterator<CellRendererState> for CellRendererState

§

impl FromIterator<ConverterFlags> for ConverterFlags

§

impl FromIterator<DBusCallFlags> for DBusCallFlags

§

impl FromIterator<DBusCapabilityFlags> for DBusCapabilityFlags

§

impl FromIterator<DBusConnectionFlags> for DBusConnectionFlags

§

impl FromIterator<DBusInterfaceSkeletonFlags> for DBusInterfaceSkeletonFlags

§

impl FromIterator<DBusMessageFlags> for DBusMessageFlags

§

impl FromIterator<DBusProxyFlags> for DBusProxyFlags

§

impl FromIterator<DBusSendMessageFlags> for DBusSendMessageFlags

§

impl FromIterator<DBusServerFlags> for DBusServerFlags

§

impl FromIterator<DBusSignalFlags> for DBusSignalFlags

§

impl FromIterator<DestDefaults> for DestDefaults

§

impl FromIterator<DialogFlags> for DialogFlags

§

impl FromIterator<DragAction> for DragAction

§

impl FromIterator<DriveStartFlags> for DriveStartFlags

§

impl FromIterator<EventMask> for EventMask

§

impl FromIterator<FileAttributeInfoFlags> for FileAttributeInfoFlags

§

impl FromIterator<FileCopyFlags> for FileCopyFlags

§

impl FromIterator<FileCreateFlags> for FileCreateFlags

§

impl FromIterator<FileFilterFlags> for FileFilterFlags

§

impl FromIterator<FileMeasureFlags> for FileMeasureFlags

§

impl FromIterator<FileMonitorFlags> for FileMonitorFlags

§

impl FromIterator<FileQueryInfoFlags> for FileQueryInfoFlags

§

impl FromIterator<FontMask> for FontMask

§

impl FromIterator<FrameClockPhase> for FrameClockPhase

§

impl FromIterator<HyperlinkStateFlags> for HyperlinkStateFlags

§

impl FromIterator<IOStreamSpliceFlags> for IOStreamSpliceFlags

§

impl FromIterator<IconLookupFlags> for IconLookupFlags

§

impl FromIterator<InputHints> for InputHints

§

impl FromIterator<JunctionSides> for JunctionSides

§

impl FromIterator<ModifierType> for ModifierType

§

impl FromIterator<Modifiers> for Modifiers

§

impl FromIterator<MountMountFlags> for MountMountFlags

§

impl FromIterator<MountUnmountFlags> for MountUnmountFlags

§

impl FromIterator<OutputStreamSpliceFlags> for OutputStreamSpliceFlags

§

impl FromIterator<PathEl> for BezPath

§

impl FromIterator<PixbufFormatFlags> for PixbufFormatFlags

§

impl FromIterator<PlacesOpenFlags> for PlacesOpenFlags

§

impl FromIterator<RecentFilterFlags> for RecentFilterFlags

§

impl FromIterator<RegionFlags> for RegionFlags

§

impl FromIterator<ResourceLookupFlags> for ResourceLookupFlags

§

impl FromIterator<SeatCapabilities> for SeatCapabilities

§

impl FromIterator<SerializeFlags> for SerializeFlags

§

impl FromIterator<SettingsBindFlags> for SettingsBindFlags

§

impl FromIterator<ShapeFlags> for ShapeFlags

§

impl FromIterator<ShowFlags> for ShowFlags

§

impl FromIterator<StateFlags> for StateFlags

§

impl FromIterator<StyleContextPrintFlags> for StyleContextPrintFlags

§

impl FromIterator<SubprocessFlags> for SubprocessFlags

§

impl FromIterator<TargetFlags> for TargetFlags

§

impl FromIterator<TextSearchFlags> for TextSearchFlags

§

impl FromIterator<TlsCertificateFlags> for TlsCertificateFlags

§

impl FromIterator<TlsDatabaseVerifyFlags> for TlsDatabaseVerifyFlags

§

impl FromIterator<TlsPasswordFlags> for TlsPasswordFlags

§

impl FromIterator<ToolPaletteDragTargets> for ToolPaletteDragTargets

§

impl FromIterator<Transformations> for Transformations

§

impl FromIterator<TreeModelFlags> for TreeModelFlags

§

impl FromIterator<WMDecoration> for WMDecoration

§

impl FromIterator<WMFunction> for WMFunction

§

impl FromIterator<WindowHints> for WindowHints

§

impl FromIterator<WindowState> for WindowState

1.17.0 · source§

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

source§

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

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,

source§

impl<'args, K, V> FromIterator<(K, V)> for FluentArgs<'args>where K: Into<Cow<'args, str>>, V: Into<FluentValue<'args>>,

§

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

source§

impl<A> FromIterator<A> for Vector<A>where A: Clone,

source§

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

§

impl<A, N> FromIterator<Option<A>> for SparseChunk<A, N>where N: Bits + ChunkLength<A>,

§

impl<A, N> FromIterator<A> for Chunk<A, N>where N: ChunkLength<A>,

source§

impl<A, R> FromIterator<R> for OrdSet<A>where A: Ord + Clone + From<R>,

source§

impl<A, RA, S> FromIterator<RA> for druid::im::HashSet<A, S>where A: Hash + Eq + Clone + From<RA>, S: BuildHasher + Default,

§

impl<A, T> FromIterator<A> for InlineArray<A, T>

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 FuturesOrdered<Fut>where Fut: Future,

§

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

§

impl<Fut> FromIterator<Fut> for SelectAll<Fut>where Fut: Future + Unpin,

§

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

1.32.0 · source§

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

source§

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

source§

impl<K, V, RK, RV> FromIterator<(RK, RV)> for OrdMap<K, V>where K: Ord + Clone + From<RK>, V: Clone + From<RV>,

source§

impl<K, V, S> FromIterator<(K, V)> for druid::im::HashMap<K, V, S>where K: Hash + Eq + Clone, V: Clone, S: BuildHasher + Default,

source§

impl<K, V, S> FromIterator<(K, V)> for std::collections::hash::map::HashMap<K, V, S>where K: Eq + Hash, S: BuildHasher + Default,

source§

impl<P> FromIterator<P> for PathBufwhere P: AsRef<Path>,

§

impl<St> FromIterator<St> for 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');
§

impl<T> FromIterator<T> for Variantwhere T: ToVariant + StaticVariantType,

source§

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

source§

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

source§

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

source§

impl<T> FromIterator<T> for VecDeque<T, Global>

1.37.0 · source§

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

1.37.0 · source§

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

source§

impl<T> FromIterator<T> for Vec<T, Global>

§

impl<T> FromIterator<T> for RGB<T>

§

impl<T> FromIterator<T> for RGBA<T, T>

source§

impl<T, L> FromIterator<(T, L)> for Targetswhere T: Into<String>, L: Into<LevelFilter>,

source§

impl<T, S> FromIterator<T> for std::collections::hash::set::HashSet<T, S>where T: Eq + Hash, S: BuildHasher + Default,

source§

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

Create an ArrayVec from an iterator.

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