Trait artifact_app::dev_prefix::FromIterator 1.0.0
[−]
[src]
pub trait FromIterator<A> { fn from_iter<T>(iter: T) -> Self
where
T: IntoIterator<Item = A>; }
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.
FromIterator
's from_iter
is rarely called explicitly, and is instead
used through Iterator
's collect
method. See collect
's
documentation for more examples.
See also: IntoIterator
.
Examples
Basic usage:
use std::iter::FromIterator; 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 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]);
Implementing FromIterator
for your type:
use std::iter::FromIterator; // 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
fn from_iter<T>(iter: T) -> Self where
T: IntoIterator<Item = A>,
T: IntoIterator<Item = A>,
Creates a value from an iterator.
See the module-level documentation for more.
Examples
Basic usage:
use std::iter::FromIterator; 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]);
Implementations on Foreign Types
impl<A, V> FromIterator<Option<A>> for Option<V> where
V: FromIterator<A>,
[src]
V: FromIterator<A>,
fn from_iter<I>(iter: I) -> Option<V> where
I: IntoIterator<Item = Option<A>>,
[src]
I: IntoIterator<Item = Option<A>>,
Takes each element in the Iterator
: if it is None
, no further
elements are taken, and the None
is returned. Should no None
occur, a
container with the values of each Option
is returned.
Here is an example which increments every integer in a vector, checking for overflow:
use std::u16; let v = vec![1, 2]; let res: Option<Vec<u16>> = v.iter().map(|&x: &u16| if x == u16::MAX { None } else { Some(x + 1) } ).collect(); assert!(res == Some(vec![2, 3]));
impl<T> FromIterator<T> for BinaryHeap<T> where
T: Ord,
[src]
T: Ord,
fn from_iter<I>(iter: I) -> BinaryHeap<T> where
I: IntoIterator<Item = T>,
[src]
I: IntoIterator<Item = T>,
impl<T> FromIterator<T> for BTreeSet<T> where
T: Ord,
[src]
T: Ord,
fn from_iter<I>(iter: I) -> BTreeSet<T> where
I: IntoIterator<Item = T>,
[src]
I: IntoIterator<Item = T>,
impl<K, V> FromIterator<(K, V)> for BTreeMap<K, V> where
K: Ord,
[src]
K: Ord,
impl FromIterator<String> for String
[src]
fn from_iter<I>(iter: I) -> String where
I: IntoIterator<Item = String>,
[src]
I: IntoIterator<Item = String>,
impl<'a> FromIterator<String> for Cow<'a, str>
[src]
impl<T> FromIterator<T> for LinkedList<T>
[src]
fn from_iter<I>(iter: I) -> LinkedList<T> where
I: IntoIterator<Item = T>,
[src]
I: IntoIterator<Item = T>,
impl<T> FromIterator<T> for Vec<T>
[src]
fn from_iter<I>(iter: I) -> Vec<T> where
I: IntoIterator<Item = T>,
[src]
I: IntoIterator<Item = T>,
impl<'a> FromIterator<&'a str> for String
[src]
fn from_iter<I>(iter: I) -> String where
I: IntoIterator<Item = &'a str>,
[src]
I: IntoIterator<Item = &'a str>,
impl<'a, 'b> FromIterator<&'b str> for Cow<'a, str>
[src]
impl<'a, T> FromIterator<T> for Cow<'a, [T]> where
T: Clone,
[src]
T: Clone,
impl FromIterator<char> for String
[src]
fn from_iter<I>(iter: I) -> String where
I: IntoIterator<Item = char>,
[src]
I: IntoIterator<Item = char>,
impl<'a> FromIterator<char> for Cow<'a, str>
[src]
impl<'a> FromIterator<Cow<'a, str>> for String
[src]
impl<'a> FromIterator<&'a char> for String
[src]
fn from_iter<I>(iter: I) -> String where
I: IntoIterator<Item = &'a char>,
[src]
I: IntoIterator<Item = &'a char>,
impl<'a> FromIterator<HeaderView<'a>> for Headers
[src]
fn from_iter<I>(iter: I) -> Headers where
I: IntoIterator<Item = HeaderView<'a>>,
[src]
I: IntoIterator<Item = HeaderView<'a>>,
impl<S> FromIterator<S> for AcAutomaton<S, Dense> where
S: AsRef<[u8]>,
S: AsRef<[u8]>,
fn from_iter<T>(it: T) -> AcAutomaton<S, Dense> where
T: IntoIterator<Item = S>,
T: IntoIterator<Item = S>,
Create an automaton from an iterator of strings.
impl FromIterator<SslMode> for SslMode
[src]
fn from_iter<T>(iterator: T) -> SslMode where
T: IntoIterator<Item = SslMode>,
[src]
T: IntoIterator<Item = SslMode>,
impl FromIterator<SslVerifyMode> for SslVerifyMode
[src]
fn from_iter<T>(iterator: T) -> SslVerifyMode where
T: IntoIterator<Item = SslVerifyMode>,
[src]
T: IntoIterator<Item = SslVerifyMode>,
impl FromIterator<Flag> for Flag
[src]
fn from_iter<T>(iterator: T) -> Flag where
T: IntoIterator<Item = Flag>,
[src]
T: IntoIterator<Item = Flag>,
impl FromIterator<SslOption> for SslOption
[src]
fn from_iter<T>(iterator: T) -> SslOption where
T: IntoIterator<Item = SslOption>,
[src]
T: IntoIterator<Item = SslOption>,
impl<'a> FromIterator<HeaderView<'a>> for Headers
[src]
fn from_iter<I>(iter: I) -> Headers where
I: IntoIterator<Item = HeaderView<'a>>,
[src]
I: IntoIterator<Item = HeaderView<'a>>,
impl<T> FromIterator<T> for Value where
T: Into<Value>,
[src]
T: Into<Value>,
fn from_iter<I>(iter: I) -> Value where
I: IntoIterator<Item = T>,
[src]
I: IntoIterator<Item = T>,
Convert an iteratable type to a Value
Examples
use serde_json::Value; let v = std::iter::repeat(42).take(5); let x: Value = v.collect();
use serde_json::Value; let v: Vec<_> = vec!["lorem", "ipsum", "dolor"]; let x: Value = v.into_iter().collect();
use std::iter::FromIterator; use serde_json::Value; let x: Value = Value::from_iter(vec!["lorem", "ipsum", "dolor"]);
impl FromIterator<(String, Value)> for Map<String, Value>
[src]
impl<A> FromIterator<<A as Array>::Item> for SmallVec<A> where
A: Array,
A: Array,
fn from_iter<I>(iterable: I) -> SmallVec<A> where
I: IntoIterator<Item = <A as Array>::Item>,
I: IntoIterator<Item = <A as Array>::Item>,
impl FromIterator<OFlag> for OFlag
fn from_iter<T>(iterator: T) -> OFlag where
T: IntoIterator<Item = OFlag>,
T: IntoIterator<Item = OFlag>,
impl FromIterator<MsFlags> for MsFlags
fn from_iter<T>(iterator: T) -> MsFlags where
T: IntoIterator<Item = MsFlags>,
T: IntoIterator<Item = MsFlags>,
impl FromIterator<MQ_OFlag> for MQ_OFlag
fn from_iter<T>(iterator: T) -> MQ_OFlag where
T: IntoIterator<Item = MQ_OFlag>,
T: IntoIterator<Item = MQ_OFlag>,
impl FromIterator<Mode> for Mode
fn from_iter<T>(iterator: T) -> Mode where
T: IntoIterator<Item = Mode>,
T: IntoIterator<Item = Mode>,
impl FromIterator<QuotaValidFlags> for QuotaValidFlags
fn from_iter<T>(iterator: T) -> QuotaValidFlags where
T: IntoIterator<Item = QuotaValidFlags>,
T: IntoIterator<Item = QuotaValidFlags>,
impl FromIterator<InputFlags> for InputFlags
fn from_iter<T>(iterator: T) -> InputFlags where
T: IntoIterator<Item = InputFlags>,
T: IntoIterator<Item = InputFlags>,
impl FromIterator<CloneFlags> for CloneFlags
fn from_iter<T>(iterator: T) -> CloneFlags where
T: IntoIterator<Item = CloneFlags>,
T: IntoIterator<Item = CloneFlags>,
impl FromIterator<MsFlags> for MsFlags
fn from_iter<T>(iterator: T) -> MsFlags where
T: IntoIterator<Item = MsFlags>,
T: IntoIterator<Item = MsFlags>,
impl FromIterator<SockFlag> for SockFlag
fn from_iter<T>(iterator: T) -> SockFlag where
T: IntoIterator<Item = SockFlag>,
T: IntoIterator<Item = SockFlag>,
impl FromIterator<EventFlags> for EventFlags
fn from_iter<T>(iterator: T) -> EventFlags where
T: IntoIterator<Item = EventFlags>,
T: IntoIterator<Item = EventFlags>,
impl FromIterator<SealFlag> for SealFlag
fn from_iter<T>(iterator: T) -> SealFlag where
T: IntoIterator<Item = SealFlag>,
T: IntoIterator<Item = SealFlag>,
impl FromIterator<MsgFlags> for MsgFlags
fn from_iter<T>(iterator: T) -> MsgFlags where
T: IntoIterator<Item = MsgFlags>,
T: IntoIterator<Item = MsgFlags>,
impl FromIterator<SaFlags> for SaFlags
fn from_iter<T>(iterator: T) -> SaFlags where
T: IntoIterator<Item = SaFlags>,
T: IntoIterator<Item = SaFlags>,
impl FromIterator<EpollCreateFlags> for EpollCreateFlags
fn from_iter<T>(iterator: T) -> EpollCreateFlags where
T: IntoIterator<Item = EpollCreateFlags>,
T: IntoIterator<Item = EpollCreateFlags>,
impl FromIterator<FdFlag> for FdFlag
fn from_iter<T>(iterator: T) -> FdFlag where
T: IntoIterator<Item = FdFlag>,
T: IntoIterator<Item = FdFlag>,
impl FromIterator<LocalFlags> for LocalFlags
fn from_iter<T>(iterator: T) -> LocalFlags where
T: IntoIterator<Item = LocalFlags>,
T: IntoIterator<Item = LocalFlags>,
impl FromIterator<ControlFlags> for ControlFlags
fn from_iter<T>(iterator: T) -> ControlFlags where
T: IntoIterator<Item = ControlFlags>,
T: IntoIterator<Item = ControlFlags>,
impl FromIterator<EpollFlags> for EpollFlags
fn from_iter<T>(iterator: T) -> EpollFlags where
T: IntoIterator<Item = EpollFlags>,
T: IntoIterator<Item = EpollFlags>,
impl FromIterator<OutputFlags> for OutputFlags
fn from_iter<T>(iterator: T) -> OutputFlags where
T: IntoIterator<Item = OutputFlags>,
T: IntoIterator<Item = OutputFlags>,
impl FromIterator<MntFlags> for MntFlags
fn from_iter<T>(iterator: T) -> MntFlags where
T: IntoIterator<Item = MntFlags>,
T: IntoIterator<Item = MntFlags>,
impl FromIterator<FsFlags> for FsFlags
fn from_iter<T>(iterator: T) -> FsFlags where
T: IntoIterator<Item = FsFlags>,
T: IntoIterator<Item = FsFlags>,
impl FromIterator<FdFlag> for FdFlag
fn from_iter<T>(iterator: T) -> FdFlag where
T: IntoIterator<Item = FdFlag>,
T: IntoIterator<Item = FdFlag>,
impl FromIterator<SFlag> for SFlag
fn from_iter<T>(iterator: T) -> SFlag where
T: IntoIterator<Item = SFlag>,
T: IntoIterator<Item = SFlag>,
impl FromIterator<WaitPidFlag> for WaitPidFlag
fn from_iter<T>(iterator: T) -> WaitPidFlag where
T: IntoIterator<Item = WaitPidFlag>,
T: IntoIterator<Item = WaitPidFlag>,
impl FromIterator<SpliceFFlags> for SpliceFFlags
fn from_iter<T>(iterator: T) -> SpliceFFlags where
T: IntoIterator<Item = SpliceFFlags>,
T: IntoIterator<Item = SpliceFFlags>,
impl FromIterator<MapFlags> for MapFlags
fn from_iter<T>(iterator: T) -> MapFlags where
T: IntoIterator<Item = MapFlags>,
T: IntoIterator<Item = MapFlags>,
impl FromIterator<ProtFlags> for ProtFlags
fn from_iter<T>(iterator: T) -> ProtFlags where
T: IntoIterator<Item = ProtFlags>,
T: IntoIterator<Item = ProtFlags>,
impl FromIterator<MemFdCreateFlag> for MemFdCreateFlag
fn from_iter<T>(iterator: T) -> MemFdCreateFlag where
T: IntoIterator<Item = MemFdCreateFlag>,
T: IntoIterator<Item = MemFdCreateFlag>,
impl FromIterator<Flags> for Flags
[src]
fn from_iter<T>(iterator: T) -> Flags where
T: IntoIterator<Item = Flags>,
[src]
T: IntoIterator<Item = Flags>,
impl<F> FromIterator<F> for FuturesUnordered<F> where
F: Future,
[src]
F: Future,
fn from_iter<T>(iter: T) -> FuturesUnordered<F> where
T: IntoIterator<Item = F>,
[src]
T: IntoIterator<Item = F>,
impl<F> FromIterator<F> for FuturesOrdered<F> where
F: Future,
[src]
F: Future,
fn from_iter<T>(iter: T) -> FuturesOrdered<F> where
T: IntoIterator<Item = F>,
[src]
T: IntoIterator<Item = F>,
Implementors
impl<A, E, V> FromIterator<Result<A, E>> for Result<V, E> where
V: FromIterator<A>,impl<A> FromIterator<A> for VecDeque<A>
impl<T, S> FromIterator<T> for HashSet<T, S> where
S: BuildHasher + Default,
T: Eq + Hash,impl<K, V, S> FromIterator<(K, V)> for HashMap<K, V, S> where
K: Eq + Hash,
S: BuildHasher + Default,impl<P> FromIterator<P> for PathBuf where
P: AsRef<Path>,