编程语言
首页 > 编程语言> > 0039-Bytes-bytes源码阅读

0039-Bytes-bytes源码阅读

作者:互联网

环境

前言

说明

参考:https://github.com/tokio-rs/bytes

目标

实现 bytes.rs 中的一部分方法。

线程安全

实现了两个线程安全的标记接口。

unsafe impl Send for Bytes {}
unsafe impl Sync for Bytes {}

Hash

实现了 Hash 函数。

impl hash::Hash for Bytes {
    fn hash<H>(&self, state: &mut H)
    where
        H: hash::Hasher,
    {
        self.as_slice().hash(state);
    }
}

Borrow

impl Borrow<[u8]> for Bytes {
    fn borrow(&self) -> &[u8] {
        self.as_slice()
    }
}

PartialEq

Bytes 实现了很多类型的比较方法,主要是方便对不同类型直接进行比较,下面只列出自己和自己的比较。

impl PartialEq for Bytes {
    fn eq(&self, other: &Bytes) -> bool {
        self.as_slice() == other.as_slice()
    }
}

PartialOrd

impl PartialOrd for Bytes {
    fn partial_cmp(&self, other: &Bytes) -> Option<cmp::Ordering> {
        self.as_slice().partial_cmp(other.as_slice())
    }
}

Ord

impl Ord for Bytes {
    fn cmp(&self, other: &Bytes) -> cmp::Ordering {
        self.as_slice().cmp(other.as_slice())
    }
}

impl Eq for Bytes {}

Vtable

Vtable 实现 Debug

impl fmt::Debug for Vtable {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        f.debug_struct("Vtable")
            .field("clone", &(self.clone as *const ()))
            .field("drop", &(self.drop as *const ()))
            .finish()
    }
}

总结

Bytes 实现了 HashBorrowEq 等方法。

附录

标签:slice,Bytes,self,bytes,源码,fn,other,impl
来源: https://www.cnblogs.com/jiangbo4444/p/16638032.html