每日HackerNews RSS

Hacker News 新闻 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交登录用 OCaml 编写 Game Boy 模拟器 (linoscope.github.io)19 分,作者 ibobev,1 小时前 | 隐藏 | 过去 | 收藏 | 1 评论 smokel 10 分钟前 [–] > 你可以编写简单的程序片段,但你不知道如何编写中大型规模的代码。 进阶:在团队环境中实现软件。我发现个人编写软件和在团队环境中编写软件之间存在巨大的差异。 终极挑战:处理一个有机增长超过十年的软件,并且仍然必须根据林迪效应进行维护。回复 考虑申请 YC 2025 秋季批次!申请截止日期为 8 月 4 日 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:

Serhii Potapov 指出Rust中一个常见挑战:由于潜在的未来歧义,无法为trait定义重叠的泛型实现。这在他Joydb项目中实现`Adapter` trait时出现,他希望基于`UnifiedAdapter`或`PartitionedAdapter`自动实现该trait。 Rust 禁止直接使用泛型实现,例如`impl<T: TraitA> MyTrait for T` 和 `impl<T: TraitB> MyTrait for T`,因为未来某个类型可能会同时实现`TraitA`和`TraitB`。 解决方案是使用标记结构体(例如`Unified<T>`)来区分适配器类型,并为每个标记实现辅助trait `BlanketAdapter`。`Adapter` trait 然后使用关联类型`Target`将行为委托给`Unified<Self>`或`Partitioned<Self>`,避免冲突。这种模式在单个接口下提供了灵活且互斥的行为,同时遵守Rust的一致性规则,从而实现符合人体工程学的代码,而无需重复。

更多

联系我们 contact @ memedata.com