pub struct Join<C, S> { /* private fields */ }
Expand description
The primary data structure for representing a joined sequence.
It contains a collection and a separator, and represents the elements of the
collection with the separator dividing each element. A collection is defined
as any type for which &T: IntoIterator
; that is, any time for which references
to the type are iterable.
A Join
is created with Joinable::join_with
, Separator::separate
, or
JoinableIterator::join_with
. Its main use is an implementation of Display
,
which writes out the elements of the underlying collection, separated by the
separator. It also implements IntoIterator
, using a JoinIter
.
§Examples
Writing via Display
:
use joinery::Joinable;
use std::fmt::Write;
let content = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let join = content.join_with(", ");
let mut buffer = String::new();
write!(buffer, "Numbers: {}", join);
assert_eq!(buffer, "Numbers: 1, 2, 3, 4, 5, 6, 7, 8, 9");
// Don't forget that `Display` gives to `ToString` for free!
assert_eq!(join.to_string(), "1, 2, 3, 4, 5, 6, 7, 8, 9")
Iterating via IntoIterator
:
use joinery::{Separator, JoinItem};
let content = [0, 1, 2];
let join = ", ".separate(content);
let mut join_iter = (&join).into_iter();
assert_eq!(join_iter.next(), Some(JoinItem::Element(&0)));
assert_eq!(join_iter.next(), Some(JoinItem::Separator(&", ")));
assert_eq!(join_iter.next(), Some(JoinItem::Element(&1)));
assert_eq!(join_iter.next(), Some(JoinItem::Separator(&", ")));
assert_eq!(join_iter.next(), Some(JoinItem::Element(&2)));
assert_eq!(join_iter.next(), None);
Implementations§
Source§impl<C, S> Join<C, S>
impl<C, S> Join<C, S>
Sourcepub fn collection(&self) -> &C
pub fn collection(&self) -> &C
Get a reference to the underlying collection.
Sourcepub fn collection_mut(&mut self) -> &mut C
pub fn collection_mut(&mut self) -> &mut C
Get a mutable reference to the underlying collection
Sourcepub fn into_collection(self) -> C
pub fn into_collection(self) -> C
Consume the join, and return the underlying collection.
Sourcepub fn into_parts(self) -> (C, S)
pub fn into_parts(self) -> (C, S)
Consume self
and return underlying collection and separator.
Trait Implementations§
Source§impl<'a, C, S> IntoIterator for &'a Join<C, S>where
&'a C: IntoIterator,
impl<'a, C, S> IntoIterator for &'a Join<C, S>where
&'a C: IntoIterator,
Source§fn into_iter(self) -> Self::IntoIter
fn into_iter(self) -> Self::IntoIter
Create a referential iterator over the join. This iterator iterates
over references to the underlying collection, interspersed with references
to the separator. See the JoinIter
documentation for more details.
Source§impl<C: IntoIterator, S: Clone> IntoIterator for Join<C, S>
impl<C: IntoIterator, S: Clone> IntoIterator for Join<C, S>
Source§fn into_iter(self) -> Self::IntoIter
fn into_iter(self) -> Self::IntoIter
Create a consuming iterator from a Join
. This iterator consumes the
elements of the underlying collection, and intersperses them with clones
of the separator. See the JoinIter
documentation for more details.
impl<C: Eq, S: Eq> Eq for Join<C, S>
impl<C, S> StructuralPartialEq for Join<C, S>
Auto Trait Implementations§
impl<C, S> Freeze for Join<C, S>
impl<C, S> RefUnwindSafe for Join<C, S>where
C: RefUnwindSafe,
S: RefUnwindSafe,
impl<C, S> Send for Join<C, S>
impl<C, S> Sync for Join<C, S>
impl<C, S> Unpin for Join<C, S>
impl<C, S> UnwindSafe for Join<C, S>where
C: UnwindSafe,
S: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Joinable for Twhere
&'a T: for<'a> IntoIterator,
impl<T> Joinable for Twhere
&'a T: for<'a> IntoIterator,
type Collection = T
Source§fn join_concat(self) -> Join<Self::Collection, NoSeparator>
fn join_concat(self) -> Join<Self::Collection, NoSeparator>
Display
, the underlying elements will be directly concatenated.
Note that the separator, while empty, is still present, and will show
up if you iterate this instance. Read more