bitwarden_crypto/
uniffi_support.rs

1use std::{num::NonZeroU32, str::FromStr};
2
3use crate::{CryptoError, EncString, UnsignedSharedKey};
4
5uniffi::custom_type!(NonZeroU32, u32, {
6    remote,
7    try_lift: |val| {
8        NonZeroU32::new(val).ok_or(CryptoError::ZeroNumber.into())
9    },
10    lower: |obj| obj.get(),
11});
12
13uniffi::custom_type!(EncString, String, {
14    try_lift: |val| {
15        EncString::from_str(&val).map_err(|e: CryptoError| e.into())
16    },
17    lower: |obj| obj.to_string(),
18});
19
20uniffi::custom_type!(UnsignedSharedKey, String, {
21    try_lift: |val| {
22        UnsignedSharedKey::from_str(&val).map_err(|e: CryptoError| e.into())
23    },
24    lower: |obj| obj.to_string(),
25});