pack function
Pack a Dart value into msgpack binary.
Implementation
Uint8List pack(dynamic value) {
final json = jsonEncode(value).toNativeUtf8();
final result = _pack()(json.cast<Char>());
malloc.free(json);
if (result.errorCode != 0) {
final msg = result.errorMessage != nullptr
? result.errorMessage.cast<Utf8>().toDartString()
: 'Unknown error';
_freeResult()(result);
throw Exception('pack failed: $msg');
}
final data = Uint8List(result.dataLen);
if (result.data != nullptr && result.dataLen > 0) {
final src = result.data.cast<Uint8>().asTypedList(result.dataLen);
data.setAll(0, src);
}
// Free the data allocated by Rust (Box<[u8]> via into_raw)
if (result.data != nullptr) {
_freeData()(result.data, result.dataLen);
}
_freeResult()(result);
return data;
}