pub enum WordSplitter {
    NoHyphenation,
    HyphenSplitter,
    Custom(fn(word: &str) -> Vec<usize>),
    Hyphenation(Standard),
}
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]);

Hyphenation(Standard)

A hyphenation dictionary can be used to do language-specific hyphenation using patterns from the hyphenation crate.

Note: Only available when the hyphenation Cargo feature is enabled.

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

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.