像memchr看起来非常简单的函数,但Rust项目使用绑定到C代码只有一个Rust回退,而不是在Rust中实现它们.无法memchr在Rust中有效实现?
Zet*_*eta 10
他们能.如果你看看glibc的实现,它看起来会有点像fallback:memchr.然而,这只是故事的一部分.在一般的实现只用时没有提供更为适宜的.
例如,x68-64有一个用汇编语言编写的变体.所以做很多 其他的架构,提供先进的指令.
因此,为了达到相同的速度,Rust必须在指令级别上提供类似的东西,这基本上归结为相同(或更好)的程序集.那时你只是重复工作.它已经存在,无需重新创建所有内容.
这里假设链接到C库的唯一原因是效率.
我担心你在这里忘记了方便.仅仅因为一个函数可以像在C中一样有效地实现(可能利用unsafe代码和汇编)并不意味着这样做很方便.
不是试图为太阳下的每个平台生成优化的实现,而是能够回退到已经提供的C函数开始,然后在必要时逐渐调整您关注的平台.
生成专门针对硬件/操作系统定制的实现是一项冗长的工作,如果有人已经付出了努力,那么重用其结果可能是有意义的!