#computational-geometry #geometry #computational #2d #spatial #graphics #algorithm

cavalier_contours_ffi

CavalierContours crate 的 C 外部函数接口

3 个版本 (破坏性)

0.4.0 2024年2月22日
0.2.0 2022年5月13日
0.1.0 2021年3月11日

算法 中排名第 2000

每月下载量 23

MIT/Apache

430KB
9K SLoC

摘要

此项目是 C++ CavalierContours 库的延续,用 Rust 重新编写,旨在扩展更多功能、更好的文档,并创建稳定的 C FFI。此项目具有 C++ 仓库的所有功能,以及更多的代码文档、测试覆盖率,并为处理多段线添加了一些额外功能。有关跟踪进度和贡献,请查看项目 GitHub 问题。有关并行偏移算法和背景信息,请参阅旧 C++ 仓库中的 README.md 此处

此库在主 cavalier_contours crate 中不使用任何不安全代码(应用了 #![forbid(unsafe_code)])。在 cavalier_contours_ffi crate 中使用不安全代码进行 C 绑定。

交互式网页用于可视化测试

此项目编译为 wasm 以创建用于可视化和测试的交互式网络演示页面。

为什么选择 Rust?

  • 使用 C 或 C++ 的所有相同优势(出色的性能/优化、原生编译、无垃圾收集、无运行时)来创建具有 C FFI 的快速可移植库
  • 围绕构建和包的内置工具非常好(cargo + crates)
  • 编写和维护测试的内置工具非常好
  • 所有这些内置工具使得开源贡献和参与更容易
  • 借用检查器 + 生命周期允许进行更高级的内存分配优化,而不会出现内存错误/损坏错误
  • 类型系统允许在不会出现内存错误/损坏错误的情况下,大量使用线程/并发
  • 区分联合和模式匹配作为一等语言特性
  • 针对 wasm 的高效工具

你是 Rust 新手但仍然想做出贡献吗?

我推荐您查看官方 Rust 书籍这里。Visual Studio Code + rust-analyzer 扩展非常适合编辑。如果您正在寻找具体要工作的项目,请检查标记为 good first issue 的项目问题。

许可证

根据您的选择,许可如下

贡献

除非您明确声明,否则任何有意提交以包含在作品中的贡献,根据 Apache-2.0 许可证定义,应按上述方式双许可,不附加任何额外条款或条件。


lib.rs:

此模块包含 cavalier_contours 的 C 外部函数接口。

依赖项

~215KB