Go and Plan 9 generally have excellent standard libraries. For buffered I/O, Go
has bufio
and Plan 9 has libbio
.
Reading UTF-8 characters is particularly ergonomic in Go bufio
, which I find
is often missing in other languages. I have implemented it myself in Rust
and Node.js.
I have since switched to the Rust utf8-chars
crate, which extends io::BufRead
with a read_char
method, but this should be
built in.
Rust io::BufReader::buffer
allows you to get the internal buffer, which enables lower level operations. I
wish this was in Go bufio
. I am undecided on whether the io::BufRead
trait
is a useful pattern or too specific and rarely implemented besides
io::BufReader
.