#zero-copy

sn

zero-copy JSON parser

2 releases

0.1.2 Mar 25, 2021
0.1.1 Mar 25, 2021
0.1.0 Mar 21, 2021
Download history 32/week @ 2023-10-19 11/week @ 2023-10-26 23/week @ 2023-11-02 9/week @ 2023-11-09 35/week @ 2023-11-16 34/week @ 2023-11-23 47/week @ 2023-11-30 32/week @ 2023-12-07 26/week @ 2023-12-14 33/week @ 2023-12-21 54/week @ 2023-12-28 30/week @ 2024-01-04 31/week @ 2024-01-11 35/week @ 2024-01-18 86/week @ 2024-01-25 78/week @ 2024-02-01

242 downloads per month

Custom license

20KB
379 lines

sn

sn is a minimalistic and simple Rust JSON parser.
sn operates by borrowing slices of the input string, meaning no data is copied during the parsing process, which helps improve efficiency.

WIP

This library is still in a very early working state and is subject to change a lot as it matures. Use At Your Own Risk.

Examples

Loading a JSON file from the filesystem and parsing it into a Value:

use sn::Parser;
use std::fs::read_to_string;

fn main() {
    let raw_json = read_to_string("./my_json.json").unwrap();
    let mut parser = Parser::new(raw_json.as_bytes());
    let parsed_json = parser.parse();

    println!("{:?}", parsed_json);
}

Usage

Add sn to your Cargo.toml:

[dependencies]
sn = "0.1.1"

lib.rs:

sn

sn is a minimalistic and simple Rust JSON parser.
sn operates by borrowing slices of the input string, meaning no data is copied during the parsing process, which helps improve efficiency.

WIP

This library is still in a very early working state and is subject to change a lot as it matures. Use At Your Own Risk.

Bytes

Bytes is a struct used internally to represent string slices, encoded as &[u8]. The primary use case for this struct is the Debug implementation, which converts the contents to a string.

Examples

Loading a JSON file from the filesystem and parsing it into a Value:

use sn::Parser;

let raw_json = r#"{ "a": [1, 2, 3], "b": null }"#;
let mut parser = Parser::new(raw_json.as_bytes());
let parsed_json = parser.parse();

println!("{:?}", parsed_json);

Usage

Add sn to your Cargo.toml:

[dependencies]
sn = "0.1.2"

No runtime deps