csv-line

Crates.iocsv-line
lib.rscsv-line
version0.2.0
sourcesrc
created_at2021-11-26 15:06:50.445836
updated_at2022-08-17 19:43:01.698676
descriptionFast deserialization of a single csv line
homepagehttps://github.com/imbolc/csv-line
repositoryhttps://github.com/imbolc/csv-line
max_upload_size
id488061
size11,920
Imbolc (imbolc)

documentation

README

License Crates.io Documentation

Fast deserialization of a single csv line.

Usage

#[derive(Debug, PartialEq, serde::Deserialize)]
struct Foo(String, i32);

assert_eq!(csv_line::from_str::<Foo>("foo,42").unwrap(), Foo("foo".into(), 42));
assert_eq!(csv_line::from_str_sep::<Foo>("foo 42", b' ').unwrap(), Foo("foo".into(), 42));

Speed

The performance is comparable with serde_json (lower is better):

test csv_builder ... bench:      16,003 ns/iter (+/- 914)
test csv_core    ... bench:      15,695 ns/iter (+/- 1,155)
test csv_line    ... bench:         240 ns/iter (+/- 14)
test serde_json  ... bench:         124 ns/iter (+/- 5)

The benchmark code is here.

Safety

This crate uses #![forbid(unsafe_code)] to ensure everything is implemented in 100% safe Rust.

Contributing

We appreciate all kinds of contributions, thank you!

Note on README

Most of the readme is automatically copied from the crate documentation by cargo-readme-sync. This way the readme is always in sync with the docs and examples are tested.

So if you find a part of the readme you'd like to change between <!-- cargo-sync-readme start --> and <!-- cargo-sync-readme end --> markers, don't edit README.md directly, but rather change the documentation on top of src/lib.rs and then synchronize the readme with:

cargo sync-readme

(make sure the cargo command is installed):

cargo install cargo-sync-readme

If you have rusty-hook installed the changes will apply automatically on commit.

License

This project is licensed under the MIT license.

Commit count: 18

cargo fmt