Skip to main content

defuse_serde_utils/
base64.rs

1use derive_more::From;
2use serde::{Deserialize, Serialize};
3use serde_with::{base64::Base64, serde_as};
4
5/// Helper type to implement `#[derive(Serialize, Deserialize)]`,
6/// as `#[near_bindgen]` doesn't support `#[serde(...)]` attributes on method arguments
7
8#[serde_as]
9#[cfg_attr(feature = "abi", derive(::schemars::JsonSchema), schemars(transparent))]
10#[derive(Debug, Clone, Copy, Default, Serialize, Deserialize, From)]
11#[serde(bound(serialize = "T: AsRef<[u8]>", deserialize = "T: TryFrom<Vec<u8>>"))]
12pub struct AsBase64<T>(#[serde_as(as = "Base64")] pub T);
13
14impl<T> AsBase64<T> {
15    #[inline]
16    pub fn into_inner(self) -> T {
17        self.0
18    }
19}