| #[cfg(feature = "hyphenation")] |
| extern crate hyphenation; |
| extern crate textwrap; |
| |
| #[cfg(feature = "hyphenation")] |
| use hyphenation::{Language, Load}; |
| use textwrap::Wrapper; |
| |
| #[cfg(not(feature = "hyphenation"))] |
| fn new_wrapper<'a>() -> Wrapper<'a, textwrap::HyphenSplitter> { |
| Wrapper::new(0) |
| } |
| |
| #[cfg(feature = "hyphenation")] |
| fn new_wrapper<'a>() -> Wrapper<'a, hyphenation::Standard> { |
| let dictionary = hyphenation::Standard::from_embedded(Language::EnglishUS).unwrap(); |
| Wrapper::with_splitter(0, dictionary) |
| } |
| |
| fn main() { |
| let example = "Memory safety without garbage collection. \ |
| Concurrency without data races. \ |
| Zero-cost abstractions."; |
| let mut prev_lines = vec![]; |
| let mut wrapper = new_wrapper(); |
| for width in 15..60 { |
| wrapper.width = width; |
| let lines = wrapper.wrap(example); |
| if lines != prev_lines { |
| let title = format!(" Width: {} ", width); |
| println!(".{:-^1$}.", title, width + 2); |
| for line in &lines { |
| println!("| {:1$} |", line, width); |
| } |
| prev_lines = lines; |
| } |
| } |
| } |