Enum textwrap::word_splitters::WordSplitter [−][src]
Expand description
The WordSplitter
enum describes where words can be split.
If the textwrap crate has been compiled with the hyphenation
Cargo feature enabled, you will find a
[WordSplitter::Hyphenation
] variant. Use this struct for
language-aware hyphenation:
#[cfg(feature = "hyphenation")] {
use hyphenation::{Language, Load, Standard};
use textwrap::{wrap, Options, WordSplitter};
let text = "Oxidation is the loss of electrons.";
let dictionary = Standard::from_embedded(Language::EnglishUS).unwrap();
let options = Options::new(8).word_splitter(WordSplitter::Hyphenation(dictionary));
assert_eq!(wrap(text, &options), vec!["Oxida-",
"tion is",
"the loss",
"of elec-",
"trons."]);
}
Please see the documentation for the hyphenation crate for more details.
Variants
NoHyphenation
Use this as a Options.word_splitter
to avoid any kind of
hyphenation:
use textwrap::{wrap, Options, WordSplitter};
let options = Options::new(8).word_splitter(WordSplitter::NoHyphenation);
assert_eq!(wrap("foo bar-baz", &options),
vec!["foo", "bar-baz"]);
HyphenSplitter
HyphenSplitter
is the default WordSplitter
used by
Options::new
. It will split words on
existing hyphens in the word.
It will only use hyphens that are surrounded by alphanumeric
characters, which prevents a word like "--foo-bar"
from
being split into "--"
and "foo-bar"
.
Examples
use textwrap::WordSplitter;
assert_eq!(WordSplitter::HyphenSplitter.split_points("--foo-bar"),
vec![6]);
Custom(fn(word: &str) -> Vec<usize>)
Use a custom function as the word splitter.
This varian lets you implement a custom word splitter using your own function.
Examples
use textwrap::WordSplitter;
fn split_at_underscore(word: &str) -> Vec<usize> {
word.match_indices('_').map(|(idx, _)| idx + 1).collect()
}
let word_splitter = WordSplitter::Custom(split_at_underscore);
assert_eq!(word_splitter.split_points("a_long_identifier"),
vec![2, 7]);
Implementations
Return all possible indices where word
can be split.
The indices are in the range 0..word.len()
. They point to
the index after the split point, i.e., after -
if
splitting on hyphens. This way, word.split_at(idx)
will
break the word into two well-formed pieces.
Examples
use textwrap::WordSplitter;
assert_eq!(WordSplitter::NoHyphenation.split_points("cannot-be-split"), vec![]);
assert_eq!(WordSplitter::HyphenSplitter.split_points("can-be-split"), vec![4, 7]);
assert_eq!(WordSplitter::Custom(|word| vec![word.len()/2]).split_points("middle"), vec![3]);
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for WordSplitter
impl Send for WordSplitter
impl Sync for WordSplitter
impl Unpin for WordSplitter
impl UnwindSafe for WordSplitter
Blanket Implementations
Mutably borrows from an owned value. Read more