Uses old Rust 2015
|0.1.3||Jul 2, 2017|
|0.1.2||Jun 3, 2017|
#234 in No standard library
50 downloads per month
Used in 5 crates
Faster, more flexible and more correct alternative to
This is WIP. Some APIs may change, some may lack documentation, others may be broken. Information in this README (especially benchmarks) may be misleading. Contributions are highly appreciated!
I don't promise to work on this much for a while!
- Lack of trait objects allows compiler to optimize better.
- Use of
size_hintallows writers to e.g. pre-allocate large enough buffer.
- Use of never type for errors comming from
Writeallows to optimize-out error checks.
Instead of multiple traits like
Debug, ... this crate defines single
Fmt<S> which allows you to implement multiple different strategies, even your own. One possible use case is to implement
Fmt<Localizer> to enable localization of your application.
Instead of returning
Err(()) on failed writes it returns apropriate types. It can even be
Void to represent writers that can never fail (e.g.
The crate provides a very simple benchmark:
test bench::bench_core_fmt ... bench: 122 ns/iter (+/- 24) test bench::bench_fast_fmt ... bench: 26 ns/iter (+/- 1)
It's consistently more than four times faster!
Roughly sorted by priority.
- Macros - ideally provide the same experience as
- More strategies
- More impls (especially
- Bridge with
- Bridge with
T: Iterator<char> + Clone?
- Integrate with
genioand provide encoders for different encodings.
- Support for trait objects if someone want's them
- Transformers (e.g. char escaping)
- Asynchronous formatting maybe?
- PR aginst
Last two are jokes.