use std::ops::{Deref, DerefMut};
#[derive(Debug, Clone, PartialEq)]
pub struct ApiResponse<T> {
bytes: Vec<u8>,
value: T,
}
impl<T> ApiResponse<T> {
#[doc(hidden)]
pub fn __new(bytes: Vec<u8>, value: T) -> Self {
Self { bytes, value }
}
pub fn bytes(&self) -> &[u8] {
&self.bytes
}
pub fn value(&self) -> &T {
&self.value
}
pub fn into_bytes(self) -> Vec<u8> {
self.bytes
}
pub fn into_value(self) -> T {
self.value
}
pub fn into_bytes_value(self) -> (Vec<u8>, T) {
(self.bytes, self.value)
}
}
impl<T> Deref for ApiResponse<T> {
type Target = T;
fn deref(&self) -> &Self::Target {
&self.value
}
}
impl<T> DerefMut for ApiResponse<T> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.value
}
}