basecoin_store/avl/
as_bytes.rs1pub enum ByteSlice<'a> {
11 Slice(&'a [u8]),
12 Vector(Vec<u8>),
13}
14
15impl AsRef<[u8]> for ByteSlice<'_> {
16 fn as_ref(&self) -> &[u8] {
17 match self {
18 ByteSlice::Slice(s) => s,
19 ByteSlice::Vector(v) => v.as_slice(),
20 }
21 }
22}
23
24pub trait AsBytes {
26 fn as_bytes(&self) -> ByteSlice<'_>;
27}
28
29impl AsBytes for Vec<u8> {
30 fn as_bytes(&self) -> ByteSlice<'_> {
31 ByteSlice::Slice(self)
32 }
33}
34
35impl AsBytes for [u8] {
36 fn as_bytes(&self) -> ByteSlice<'_> {
37 ByteSlice::Slice(self)
38 }
39}
40
41impl AsBytes for str {
42 fn as_bytes(&self) -> ByteSlice<'_> {
43 ByteSlice::Slice(self.as_bytes())
44 }
45}
46
47impl AsBytes for &str {
48 fn as_bytes(&self) -> ByteSlice<'_> {
49 ByteSlice::Slice((*self).as_bytes())
50 }
51}
52
53impl AsBytes for String {
54 fn as_bytes(&self) -> ByteSlice<'_> {
55 ByteSlice::Slice(self.as_bytes())
56 }
57}
58
59impl AsBytes for [u8; 1] {
60 fn as_bytes(&self) -> ByteSlice<'_> {
61 ByteSlice::Slice(self)
62 }
63}