Skip to main content

cbor_core/value/
bytes.rs

1use std::borrow::Cow;
2
3use crate::{Error, Result, Value};
4
5impl From<Vec<u8>> for Value<'_> {
6    fn from(value: Vec<u8>) -> Self {
7        Self::ByteString(value.into())
8    }
9}
10
11impl<'a> From<&'a [u8]> for Value<'a> {
12    fn from(value: &'a [u8]) -> Self {
13        Self::ByteString(value.into())
14    }
15}
16
17impl<const N: usize> From<[u8; N]> for Value<'_> {
18    fn from(value: [u8; N]) -> Self {
19        Self::ByteString(value.to_vec().into())
20    }
21}
22
23impl<'a, const N: usize> From<&'a [u8; N]> for Value<'a> {
24    fn from(value: &'a [u8; N]) -> Self {
25        Self::ByteString(value.as_slice().into())
26    }
27}
28
29impl From<Box<[u8]>> for Value<'_> {
30    fn from(value: Box<[u8]>) -> Self {
31        Self::ByteString(Vec::from(value).into())
32    }
33}
34
35impl<'a> From<Cow<'a, [u8]>> for Value<'a> {
36    fn from(value: Cow<'a, [u8]>) -> Self {
37        Self::ByteString(value)
38    }
39}
40
41impl<'a> TryFrom<Value<'a>> for Vec<u8> {
42    type Error = Error;
43    fn try_from(value: Value<'a>) -> Result<Self> {
44        value.into_bytes()
45    }
46}
47
48impl<'a> TryFrom<&'a Value<'a>> for &'a [u8] {
49    type Error = Error;
50    fn try_from(value: &'a Value<'a>) -> Result<Self> {
51        value.as_bytes()
52    }
53}
54
55impl<'a> TryFrom<&'a mut Value<'a>> for &'a mut Vec<u8> {
56    type Error = Error;
57    fn try_from(value: &'a mut Value<'a>) -> Result<Self> {
58        value.as_bytes_mut()
59    }
60}