summaryrefslogtreecommitdiffstats
path: root/library/core/src/unit.rs
diff options
context:
space:
mode:
Diffstat (limited to 'library/core/src/unit.rs')
-rw-r--r--library/core/src/unit.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/library/core/src/unit.rs b/library/core/src/unit.rs
new file mode 100644
index 000000000..6656dd5c4
--- /dev/null
+++ b/library/core/src/unit.rs
@@ -0,0 +1,21 @@
+use crate::iter::FromIterator;
+
+/// 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());
+/// ```
+#[stable(feature = "unit_from_iter", since = "1.23.0")]
+impl FromIterator<()> for () {
+ fn from_iter<I: IntoIterator<Item = ()>>(iter: I) -> Self {
+ iter.into_iter().for_each(|()| {})
+ }
+}