CBOR (RFC 8949) implementation for MoonBit - Pure and FFI versions
// Encoding
let encoded_int = @cbor.encode_int(42L)
let encoded_str = @cbor.encode_string("hello")
let encoded_double = @cbor.encode_double(3.14)
let encoded_bool = @cbor.encode_bool(true)
let encoded_bytes = @cbor.encode_bytes(Bytes::from_array([b'\x01', b'\x02']))
let encoded_null = @cbor.encode_null()
// Decoding
let decoded_int = @cbor.decode_int(encoded_int)!
let decoded_str = @cbor.decode_string(encoded_str)!
let decoded_double = @cbor.decode_double(encoded_double)!
let decoded_bool = @cbor.decode_bool(encoded_bool)!
let decoded_bytes = @cbor.decode_bytes(encoded_bytes)!{
"deps": {
"mizchi/cbor": "0.1.0"
}
}# Run all tests
moon test
# Total: 22 tests covering all supported typesmoon run examplescbor.mbt # Main CBOR implementation
cbor_test.mbt # Comprehensive test suite (22+ tests)
cbor_bench.mbt # Performance benchmarks
examples/ # Usage examples
└── main.mbt # Example usage
cbor_rust/ # Rust reference implementation (for comparison)
└── src/lib.rs # ciborium-based implementationpub suberror CborError String
fn encode_bool(value : Bool) -> Bytesfn encode_double(value : Double) -> Bytesfn encode_string(value : String) -> BytesCBOR (RFC 8949) implementation for MoonBit - Pure and FFI versions