char_reader 0.1.1

Safely read wild streams as chars or lines
Documentation
  • Coverage
  • 100%
    2 out of 2 items documented0 out of 0 items with examples
  • Size
  • Source code size: 14.1 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.48 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 10s Average build duration of successful builds.
  • all releases: 10s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Canop/char_reader
    5 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • Canop

MIT Latest Version docs Chat on Miaou

BufRead's read_line may be a problem when you need performance and safety on unvetted streams:

You may wait forever or get an out of memory panic if there's no newline in the stream. And even if there's one, it may be way past what you need: you'll have to keep everything in memory just to get to the start of the following line.

CharReader is a buffered reader fixing those problems.

  • you can read lines without choking on an infinite stream without newlines
  • you can read lines and not store more than necessary if you just want the beginning
  • there's a next_char function to read only one char

It's suitable when you'd like to read UTF8 lines and aren't sure the data are kind enough.

When reading a line, you pass two parameters:

  • the max number of chars you want to get (rest of line will be dropped)
  • the max number of chars before giving out with an error (thus protecting against infinite streams)

All errors are io::Error:

  • UTF8 errors are of kind InvalidData
  • Lines exceeding your threshold are of kind Other

Alternative: If you know in advance how many lines you'd need and you always want whole lines, the standard take method of BufReader protects you against memory overflows.