零拷贝
ZeroCopyBuffer<Vec<u8>>
(以及与它类似的东西,比如 ZeroCopyBuffer<Vec<i8>>
) 可以无需拷贝将数据从
Rust 发送到 Dart. 因此,可以节约拷贝数据的开销,如果你的数据很大(比如一张高分辨率图像),开销可能会很高。
示例
pub fn draw_tree(tree: Vec<TreeNode>) -> ZeroCopyBuffer<Vec<u8>> { ... }
转换为:
Future<Uint8List> drawTree({required List<TreeNode> tree});
生成的 Dart 代码看起来和没有用 ZeroCopyBuffer
的几乎一样。但是它的内部实现已经改变,完全不需要内存拷贝!
注意:如果你对 Future
感兴趣,请看 这里.