str :: as_bytes和CString :: as_bytes_with_nul之间有区别吗?

lap*_*tou 1 string rust

这样做有什么区别:

name.as_bytes()
Run Code Online (Sandbox Code Playgroud)

还有这个:

CString::new(name)?.as_bytes_with_nul()
Run Code Online (Sandbox Code Playgroud)

我希望以一种我可以通过网络轻松发送它们的方式从name(它String)获取字节,我不确定CString这里是否有必要.

mca*_*ton 5

as_bytes_with_nul开头的文档以:

等效于as_bytes函数,除了返回的切片包括尾随的nul终止符.

虽然as_bytes是:

返回片并没有包含尾随NUL终止

(重点在原始报价中)

您是否需要传输nul字节取决于您,这取决于您通过网络发送数据的方式(TCP/UDP?通过TCP的原始二进制数据?如果是这样,您打算如何分离消息?JSON?等).