指针的方法swap()
和std::ptr::swap()
有什么区别?
它们的特征是相似的,就我所测试的而言,它们的行为是相同的。
pub unsafe fn swap(self, with: *mut T)
pub unsafe fn swap<T>(x: *mut T, y: *mut T)
至于std::mem::swap()
(用于引用而不是指针),有一种情况是我们不能调用std::mem::swap()
,因为它需要两个可变引用。在这种情况下,我们将调用例如slice::swap()
。std::ptr::swap()
怎么样?
1条答案
按热度按时间mpgws1up1#
ptr.swap()
和std::ptr::swap()
之间没有区别-前者的实现只是调用后者:根据the docs,
mem::swap
和ptr::swap
之间的唯一区别是:ptr::swap
对指针而不是引用进行操作。ptr::swap
允许指向的值重叠。ptr::swap
不需要初始化指向的数据/满足指向类型的要求。除此之外,它们的语义是相同的。