#clojure #data #jni #convert #idiomatic #serialization #serde

serde_clj

使用JNI将Rust数据转换为惯用的Clojure数据

2个版本

0.1.1 2020年3月9日
0.1.0 2020年2月23日

#1987 in 编码

MIT许可证

45KB
1.5K SLoC

serde_clj

使用JNI在内存中将Rust数据结构转换为(相对)惯用的Clojure数据。

有关使用示例,请参阅 test/src/lib.rs

示例

#[derive(Serialize)]
struct MyStruct {
    number: i32,
    names: Vec<String>
}

变为

{:number 3
 :names ["foo" "bar"]}

注释/待办事项

  • 无符号整数序列化为'下一个最大的'类型(除u64外,它变为i64),因为Java实际上不支持无符号。
  • 待办事项:在必要处转换为BigInt。
  • 如果您想序列化一个 Vec<u8>,您应该使用serde_bytes进行注释或包装字段,否则您将得到一个包含java.lang.Short的向量,这可能不是您想要的,而且效率也不高。
  • 更广泛的测试。

lib.rs:

serde_clj

使用JNI在内存中将Rust数据结构转换为(相对)惯用的Clojure数据。

有关使用示例,请参阅 test/src/lib.rs

示例

#[derive(Serialize)]
struct MyStruct {
    number: i32,
    names: Vec<String>
}

变为

{:number 3
 :names ["foo" "bar"]}

依赖项

~1.5–2.8MB
~44K SLoC