假设有一个供应商提供的第三方货运项目,该项目由一个库plem
和一个二进制文件plem_main
组成,我想使用自己的某些功能对其进行扩展。至关重要的是,该功能需要放入库plem
中,而不是二进制文件plem_main
中(可以保持不变)。我可以在该库周围编写一个包装器my_plem
,该包装器提供与二进制文件相同的接口,但包含额外的功能。该项目将按以下方式设置:
.
├── Cargo.toml
├── my_plem
│ ├── Cargo.toml
│ └── src
│ └── lib.rs
└── third-party
├── plem
│ ├── Cargo.toml
│ └── src
│ └── lib.rs
└── plem_main
├── Cargo.toml
└── src
└── main.rs
my_plem/src/lib.rs
将取决于third-party/plem/src/lib.rs
中的内容,然后重新导出或覆盖后者导出的函数。有什么好方法可以使货物在plem_main
而不是my_plem
的顶部构建二进制plem
?
这里的“最佳”是指在我的项目中更新plem
时解决方案没有合并冲突或发生了最小的合并冲突,并且不重复plem_main
的代码。理想情况下,它根本不涉及第三方。