Crates.io | csv-line |
lib.rs | csv-line |
version | 0.2.0 |
source | src |
created_at | 2021-11-26 15:06:50.445836 |
updated_at | 2022-08-17 19:43:01.698676 |
description | Fast deserialization of a single csv line |
homepage | https://github.com/imbolc/csv-line |
repository | https://github.com/imbolc/csv-line |
max_upload_size | |
id | 488061 |
size | 11,920 |
Fast deserialization of a single csv line.
#[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));
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.
This crate uses #![forbid(unsafe_code)]
to ensure everything is implemented in 100% safe Rust.
We appreciate all kinds of contributions, thank you!
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.
This project is licensed under the MIT license.