#serde-json #json #serde

无std core-serde-json

为无std程序提供的serde-json

1 个不稳定版本

0.1.0 2019年10月2日

#366无标准库

MIT/Apache

53KB
2K SLoC

serde-json-core

serde-json 用于 no_std 程序

文档

许可

许可协议为以下之一

由您选择。

贡献

除非您明确说明,否则根据Apache-2.0许可协议定义,您提交的任何有意包含在作品中的贡献,都将根据上述协议双重许可,不附加任何额外条款或条件。


lib.rs:

serde-json 用于 no_std 程序

此版本的 serde-json 针对运行在资源受限设备上的应用程序。

当前功能

  • 错误类型是一个类似于C的枚举(更少的开销,更小的内存占用)
  • 序列化和反序列化不需要内存分配
  • 整数反序列化不经过 u64;而是直接将字符串解析为请求的整数类型。这避免了在针对非64位架构时引入KB级的编译器内建函数。
  • 支持反序列化
    • 布尔值
    • 整数
    • str(这是一个零拷贝操作。)(*)
    • 可选
    • 数组
    • 元组
    • 结构体
    • 类似于C的枚举
  • 支持序列化(仅紧凑格式)
    • 布尔值
    • 整数
    • 字符串 (**)
    • 可选
    • 数组
    • 元组
    • 结构体
    • 类似于C的枚举

(*) 字符串反序列化忽略转义序列。未来可能会通过使用不同的序列化器来支持转义序列,因为此操作不是零拷贝。

(**) 字符串序列化不进行转义。这尚未实现。

计划中的功能

  • core::io::{Read,Write} 成为一个东西时,从/到IO对象的序列化/反序列化。

非特性

这明显超出了范围

  • 任何涉及动态内存分配的内容
    • 比如动态的 Value 类型

MSRV

该crate保证在稳定版Rust 1.31.0及更高版本上编译。它可能在较旧版本上编译,但这可能在任何新的补丁版本中发生变化。

依赖项

~0.8–1.1MB
~24K SLoC