1 个不稳定版本
0.1.0 | 2021年3月1日 |
---|
#95 in #change
7KB
115 行(不包括注释)
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
依赖关系
~220KB