sonic-rs 0.5.4

Sonic-rs is a fast Rust JSON library based on SIMD
Documentation
## Golang 迁移 Rust

目前版本:

`sonic-rs = "0.3"`

对应 API 参考:

- 解析到 Golang 结构体等强类型:

  sonic-go/encoding-json Unmarshal => sonic_rs::from_str/from_slice

  sonic-go/encoding-json Marshal => sonic_rs::to_string/to_vec 等

- 解析到 Golang `interface{}/any` 或 sonic-go `ast.Node`

  建议使用 `sonic_rs::Value` 替换,性能更优。

- 使用 `gjson.Get``jsonparser.Get` 等API:
  gjson/jsonparser get API 本身未做严格的JSON 校验,因此可以使用 `sonic_rs::get_unchecked` 进行平替。 sonic_rs get API 会返回一个 `Result<LazyValue>`. 如果没有找到该字段,会报错。
  
  `LazyValue` 可以用 `as_bool, as_str`等将 JSON 进一步**解析成对应的类型**  
  如果只需要拿到原始的raw JSON, ***不做解析***,请使用 `as_raw_str, as_raw_faststr` 等 API. 参考例子: [get_from.rs]../examples/get_from.rs

  如果需要从 JSON 中拿到多个字段,推荐使用 `get_many`. 参考例子: [get_many.rs]../examples/get_many.rs

- 使用 `gjson.ForEach` or `jsonparser.ObjectEach/ArrayEach` 等API:

  这些 API 也没有对原始 JSON 做严格校验。因此可以使用 `sonic_rs::to_array/object_iter_unchecked` 等进行平替。参考例子 [iterator.rs]../examples/iterator.rs

- 解析到 Golang JsonNumber:

  请直接使用 `sonic_rs::RawNumber`

- 解析到 Golang RawMessage:

  请直接使用 `sonic_rs::LazyValue<'a>`, 生命周期和输入的JSON绑定,会尽可能减少拷贝开销。如果不想带生命周期,可以使用 `sonic_rs::OwnedLazyValue`. 例如:  [lazyvalue.rs]../examples/lazyvalue.rs