[][src]Crate ijson

This crate offers a replacement for serde-json's Value type, which is significantly more memory efficient.

As a ballpark figure, it will typically use half as much memory as serde-json when deserializing a value and the memory footprint of cloning a value is more than 7x smaller.

The primary type exposed by this crate is the IValue type. It is guaranteed to be pointer-sized and has a niche (so Option<IValue> is also guaranteed to be pointer-sized).

Cargo features:

  • ctor A global string cache is used when interning strings. This cache is normally initialized lazily on first use. Enabling the ctor feature will cause it to be eagerly initialized on startup. There is no performance benefit to this, but it can help avoid false positives from tools like mockalloc which try to detect memory leaks during tests.

Re-exports

pub use array::IArray;
pub use number::INumber;
pub use object::IObject;
pub use string::IString;

Modules

array

Functionality relating to the JSON array type

number

Functionality relating to the JSON number type

object

Functionality relating to the JSON object type

string

Functionality relating to the JSON string type

Macros

ijson

Construct an IValue using familiar JSON syntax.

Structs

BoolMut

A proxy type which imitates a &mut bool.

IValue

Stores an arbitrary JSON value.

Enums

Destructured

Enum returned by IValue::destructure to allow matching on the type of an owned IValue.

DestructuredMut

Enum returned by IValue::destructure_mut to allow matching on the type of a mutable reference to an IValue.

DestructuredRef

Enum returned by IValue::destructure_ref to allow matching on the type of a reference to an IValue.

ValueType

Enum which distinguishes the six JSON types.

Traits

ValueIndex

Trait which abstracts over the various number and string types which can be used to index into an IValue.

Functions

from_value

Converts an IValue to an arbitrary type using that type's serde::Deserialize implementation.

to_value

Converts an arbitrary type to an IValue using that type's serde::Serialize implementation.