1个不稳定版本
0.1.1 | 2021年4月10日 |
---|---|
0.1.0 |
|
#329 在 无标准库
70KB
2K SLoC
从 serde-json-core 分支而来,移除了heapless依赖并改为使用core::fmt::Formatter
用法
struct AnyStruct {}
impl core::fmt::Display for AnyStruct {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
serde_json_core_fmt::to_fmt(f, self)
}
}
lib.rs
:
serde-json
适用于 no_std
程序
此版本的 serde-json
针对运行在资源受限设备上的应用程序。
当前功能
- 错误类型是类似于C的枚举(开销小,内存占用小)
- 序列化和反序列化不需要内存分配
- 整数的反序列化不通过
u64
进行;而是直接将字符串解析到所需的整数类型。这避免了在针对非64位架构时引入KB级的编译器内联函数。 - 支持反序列化
bool
- 整数
str
(这是一个零拷贝操作。)(*)Option
- 数组
- 元组
- 结构体
- 类似于C的枚举
- 支持(仅紧凑格式)序列化
bool
- 整数
str
(**)Option
- 数组
- 元组
- 结构体
- 类似于C的枚举
(*) 字符串的反序列化忽略转义序列。转义序列可能在未来通过使用不同的序列化器来实现,因为这个操作不是零拷贝。
(**) 字符串的序列化不进行转义。这还没有实现。
计划中的功能
- (De)序列化到/从IO对象,一旦
core::io::{Read,Write}
成为现实。
非功能
这明确超出了范围
- 涉及动态内存分配的任何内容
- 例如动态的
Value
类型
- 例如动态的
最低支持的Rust版本 (MSRV)
此包保证在稳定版Rust 1.40.0及更高版本上编译。它 可能 也能在较老版本上编译,但这可能会在任何新的修补版本中发生变化。
依赖项
~145–415KB