1 个不稳定版本
0.1.0 | 2021年3月1日 |
---|
#33 in #consume
在 update-sync 中使用
11KB
218 行
Update-Sync
Update sync 是一种多编辑器同步策略,专为客户端/服务器模型设计。
pub trait UpdateSync {
fn update_sync(last_base: Self, new_base: Self, set: Self) -> Self;
}
last_base
是客户端已知的状态的最后状态,new_base
是服务器当前已知的状态,set
是客户端希望更改到的状态
此函数返回服务器的新的状态,以响应用户
通常应用的策略如下
if last_base != set {
set
} else {
new_base
}
以下类型适用:u8
、u16
、u32
、u64
、u128
、usize
、i8
、i16
、i32
、i64
、i128
、isize
、f32
、f64
、bool
、char
、String
、Vec<u8>
、Option<T: PartialEq>
。
元组、HashMap
和 BTreeMap
将独立于彼此更新每个索引或键值。
派生
如果您启用 derive
功能,则可以派生此行为。
结构体将被更新,以便每个字段独立更新,就像元组、HashMap
和 BTreeMap
一样。
枚举更新方式如下:如果变体保持不变,则像结构体一样更新。如果变体发生变化,则set
变体将覆盖基本变体。
为什么没有实现?
我可能遗漏了它,请提交一个问题,我会修复它。
除非它是向量或类似的东西,在这种情况下,你需要操作转换,我很乐意为此实现它,但我甚至不确定实现的最佳策略是什么。如果有人提交一个合理的实现,我会批准它。
我能看到这个如何使用的一个演示吗?
当然,查看demo.rs
依赖项
~1.5MB
~34K SLoC