use core::marker;
#[cfg(feature = "alloc")]
use crate::alloc::Global;
use crate::mode::Text;
use crate::{Context, Decode, Encode, IntoWriter};
use super::cursor::IntoCursor;
use super::de::JsonbDecoder;
use super::en::JsonbEncoder;
#[cfg(feature = "alloc")]
use super::error::Error;
#[allow(unused)]
const DEFAULT: Encoding = Encoding::new();
crate::macros::bare_encoding!(Text, DEFAULT, sqlite_jsonb, IntoCursor, IntoWriter);
pub struct Encoding<M = Text>
where
M: 'static,
{
_marker: marker::PhantomData<M>,
}
impl Default for Encoding<Text> {
#[inline]
fn default() -> Self {
Self::new()
}
}
impl Encoding<Text> {
#[inline]
pub const fn new() -> Self {
Encoding {
_marker: marker::PhantomData,
}
}
}
impl<M> Encoding<M>
where
M: 'static,
{
pub const fn with_mode<T>(self) -> Encoding<T>
where
T: 'static,
{
Encoding {
_marker: marker::PhantomData,
}
}
crate::macros::encoding_impls!(
M,
sqlite_jsonb,
JsonbEncoder::<_, _, M>::new,
JsonbDecoder::<_, _, M>::new,
IntoCursor::into_cursor,
crate::sqlite_jsonb::Cursor,
IntoWriter::into_writer,
);
}
impl<M> Clone for Encoding<M> {
#[inline]
fn clone(&self) -> Self {
*self
}
}
impl<M> Copy for Encoding<M> {}