Crate basic_text[−][src]
Expand description
Basic Text strings and I/O streams
This crate provides several utilities for working with Basic Text.
-
TextStringandTextStrare similar to the standard library’sStringandstr, but use the Basic Text string format, along with atext!("...")macro for Basic Text string literals. -
TextReaderandTextWriterare input and output streams which use the Basic Text stream format. On input, content is converted in a way which is lossy with respect to the original bytestream. Output uses the “strict” conversion method, in which invalid content is diagnosed with errors. -
BufReadText, an extension trait that addstext_linesandtext_lines_lossytoBufReadimplementations for reading lines from an input stream asBasicTextstrings. -
TextDuplexeris aDuplexfor reading and writing on an interactive stream using Basic Text.
Examples
Working with TextString and company is overall similar to working with
String and company, but with a little more syntax in some places:
use basic_text::{text, text_substr, ReadText, TextReader, TextString, TextWriter, WriteText}; use std::io::{stdin, stdout, Write}; // Wrap stdout in an output stream that ensures that the output is // Basic Text. let mut stream = TextWriter::new(stdout()); // Construct Basic Text literals. let greeting = text!("Hello, World!"); // Write Basic Text directly. stream.write_text(greeting).unwrap(); // `TextString` can't be split at arbitrary boundaries, so this crate has // substring types, so you can work with Basic Text content incrementally. // The following code prints the "Service Dog" ZWJ Sequence "🐕🦺" in // parts, where splitting it would not be valid in Basic Text. stream .write_text_substr(text_substr!("🐕\u{200d}")) .unwrap(); stream.write_text_substr(text_substr!("🦺")).unwrap(); // Regular strings with Basic Text content can be written. writeln!(stream, "Valid!").unwrap(); // But invalid content is diagnosed as an error. writeln!(stream, "\u{c}Invalid!\u{7}").unwrap_err(); // A Basic Text reader, on the other hand, always succeeds, by replacing // invalid sequences with `�`s. let mut s = TextString::new(); TextReader::new(stdin()) .read_to_text_string(&mut s) .unwrap();
Macros
| text |
|
| text_substr |
|
Structs
| FromTextError |
|
| TextDuplexer | A |
| TextError |
|
| TextLines | An iterator over the lines of an instance of |
| TextLinesLossy | An iterator over the lines of an instance of |
| TextReader | A |
| TextStr | Text slices. |
| TextString | A Basic Text encoded, growable string. |
| TextSubstr | Text substring slices. |
| TextSubstring | A substring of a Basic Text string or stream. |
| TextWriter | A |
Constants
| NORMALIZATION_BUFFER_SIZE | The minimum size of a buffer needed to perform NFC normalization, and thus
the minimum size needed to pass to |
Traits
| BufReadText | An extension trait for |
| ReadText | Add a convenience method for reading Basic Text content. |
| ReadTextLayered | Extend the |
| WriteText | Add a convenience method for reading into |
Functions
| copy_text | Like |
| copy_text_using_status | Like |
| default_read_exact_text_substr | Default implementation of |
| default_read_to_text_string | Default implementation of |
| default_write_text_substr | Default implementation of |