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}