#transformation #value #generic #extensible #mechanics #constrained #transform

kyte

kyte 提供了 Rust 中针对操作变换的扩展机制,其值是通用的(不仅限于文本),与 Quill 兼容,并进行了完全的模糊测试

1 个不稳定版本

0.1.0 2023年10月15日

#4#mechanics

MIT 许可证

60KB
1.5K SLoC

kyte

kyte 提供了 Rust 中针对操作变换的扩展机制,其值是通用的(不仅限于文本),与 Quill 兼容,并进行了完全的模糊测试。

操作变换(OT)通过允许多个用户同时进行更改,从而实现实时协作编辑。一个具有 OT 功能的中心服务器会转换并广播这些更改,即使在高延迟的情况下,每个人也能看到相同的同步状态。

此库可以集成到您的应用程序中,以构建操作变换的客户端和/或服务器端实现。

用法

use kyte::{Compose, Delta, Transform};

let before = Delta::new().insert("Hello World".to_owned(), ());

let alice = Delta::new().retain(5, ()).insert(",".to_owned(), ());
let bob = Delta::new().retain(11, ()).insert("!".to_owned(), ());

assert_eq!(
    before
        .compose(alice)
        .compose(alice.transform(bob, true)),
    before
        .compose(bob)
        .compose(bob.transform(alice, false)),
)

致谢

此库在很大程度上实现了 Quill 的 delta 规范 并使用了他们的一些 测试用例 进行单元测试。简单来说,没有他们的 Quill 上的出色工作,这个库将不会存在。

许可证

版权所有 2023 Glacyr B.V.

以下对本软件及其相关文档文件(以下简称“软件”)的副本获取者授予免费许可,允许任何人在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供方提供软件的人员执行上述操作,前提是以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论此类责任是基于合同、侵权或其他方式,是否因软件或其使用或其他方式而产生。

依赖关系

~0.5–1.1MB
~25K SLoC