#macro-derive #index #consume #self #client-server #set #update-sync

update-sync_derive

update-sync 提供派生宏。请不要直接消耗

1 个不稳定版本

0.1.0 2021年3月1日

#33 in #consume


update-sync 中使用

MIT/Apache

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
}

以下类型适用:u8u16u32u64u128usizei8i16i32i64i128isizef32f64boolcharStringVec<u8>Option<T: PartialEq>

元组、HashMapBTreeMap 将独立于彼此更新每个索引或键值。

派生

如果您启用 derive 功能,则可以派生此行为。

结构体将被更新,以便每个字段独立更新,就像元组、HashMapBTreeMap 一样。

枚举更新方式如下:如果变体保持不变,则像结构体一样更新。如果变体发生变化,则set变体将覆盖基本变体。

为什么没有实现?

我可能遗漏了它,请提交一个问题,我会修复它。

除非它是向量或类似的东西,在这种情况下,你需要操作转换,我很乐意为此实现它,但我甚至不确定实现的最佳策略是什么。如果有人提交一个合理的实现,我会批准它。

我能看到这个如何使用的一个演示吗?

当然,查看demo.rs

依赖项

~1.5MB
~34K SLoC