pub enum WordSeparator {
AsciiSpace,
Custom(fn(line: &str) -> Box<dyn Iterator<Item = Word<'_>> + '_>),
}Expand description
Describes where words occur in a line of text.
The simplest approach is to say that words are separated by one or
more ASCII spaces (' '). This works for Western languages
without emojis. A more complex approach is to use the Unicode line
breaking algorithm, which finds break points in non-ASCII text.
The line breaks occur between words, please see
WordSplitter for options of how to handle
hyphenation of individual words.
§Examples
use textwrap::core::Word;
use textwrap::WordSeparator::AsciiSpace;
let words = AsciiSpace.find_words("Hello World!").collect::<Vec<_>>();
assert_eq!(words, vec![Word::from("Hello "), Word::from("World!")]);Variants§
AsciiSpace
Find words by splitting on runs of ' ' characters.
§Examples
use textwrap::core::Word;
use textwrap::WordSeparator::AsciiSpace;
let words = AsciiSpace.find_words("Hello World!").collect::<Vec<_>>();
assert_eq!(words, vec![Word::from("Hello "),
Word::from("World!")]);Custom(fn(line: &str) -> Box<dyn Iterator<Item = Word<'_>> + '_>)
Find words using a custom word separator.
Implementations§
Source§impl WordSeparator
impl WordSeparator
Sourcepub const fn new() -> Self
pub const fn new() -> Self
Create a new word separator.
The best available algorithm is used by default, i.e.,
[WordSeparator::UnicodeBreakProperties] if available,
otherwise WordSeparator::AsciiSpace.
Trait Implementations§
Source§impl Clone for WordSeparator
impl Clone for WordSeparator
impl Copy for WordSeparator
Source§impl Debug for WordSeparator
impl Debug for WordSeparator
Source§impl PartialEq for WordSeparator
impl PartialEq for WordSeparator
Source§fn eq(&self, other: &Self) -> bool
fn eq(&self, other: &Self) -> bool
Compare two word separators.
use textwrap::WordSeparator;
assert_eq!(WordSeparator::AsciiSpace, WordSeparator::AsciiSpace);
#[cfg(feature = "unicode-linebreak")] {
assert_eq!(WordSeparator::UnicodeBreakProperties,
WordSeparator::UnicodeBreakProperties);
}Note that WordSeparator::Custom values never compare equal:
use textwrap::WordSeparator;
use textwrap::core::Word;
fn word_separator(line: &str) -> Box<dyn Iterator<Item = Word<'_>> + '_> {
Box::new(line.split_inclusive(' ').map(Word::from))
}
assert_ne!(WordSeparator::Custom(word_separator),
WordSeparator::Custom(word_separator));