Crates.io | ctrl-z |
lib.rs | ctrl-z |
version | 0.1.0 |
source | src |
created_at | 2022-07-20 04:31:31.046767 |
updated_at | 2022-07-20 04:31:31.046767 |
description | A composable reader to treat `0x1A` as an end-of-file marker. |
homepage | |
repository | https://github.com/Anders429/ctrl-z |
max_upload_size | |
id | 628683 |
size | 25,361 |
A composable reader to treat 0x1A
as an end-of-file marker.
Historically, 0x1A
(commonly referred to as CTRL-Z
, ^Z
, or a "substitute character") was used
in old systems to explicitly mark the end of a file. While modern systems no longer require this
practice, some legacy files still contain this byte to mark the end of a file. This library
provides a reader to treat 0x1A
as the end of a file, rather than reading it as a regular byte.
This library provides a reader in the form of a struct
named ReadToCtrlZ
. As is common
practice, this reader is composable with other types implementing the
Read
or
BufRead
traits. The reader checks the
returned bytes for the presence of the EOF marker 0x1A
and stops reading when it is encountered.
For example, the reader defined below only reads until the 0x1A
byte, at which point it stops
reading.
use ctrl_z::ReadToCtrlZ;
let mut reader = ReadToCtrlZ::new(b"foo\x1abar".as_slice());
let mut output = String::new();
// Reading omits the final `0x1A` byte.
assert!(reader.read_to_string(&mut output).is_ok());
assert_eq!(output, "foo");
This crate is guaranteed to compile on stable rustc 1.0.0
and up.
This project is licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.