substrate_stellar_sdk/xdr/impls/
claimable_balance_id.rs

1use crate::{
2    lib::{String, ToString},
3    AsBinary, ClaimableBalanceId, StellarSdkError, XdrCodec,
4};
5
6pub trait IntoClaimbleBalanceId {
7    fn into_claimable_balance_id(self) -> Result<ClaimableBalanceId, StellarSdkError>;
8}
9
10impl IntoClaimbleBalanceId for ClaimableBalanceId {
11    fn into_claimable_balance_id(self) -> Result<ClaimableBalanceId, StellarSdkError> {
12        Ok(self)
13    }
14}
15
16impl<T: AsRef<[u8]>> IntoClaimbleBalanceId for AsBinary<T> {
17    fn into_claimable_balance_id(self) -> Result<ClaimableBalanceId, StellarSdkError> {
18        let balance_id: [u8; 4 + 32] = self.as_binary()?;
19
20        ClaimableBalanceId::from_xdr(balance_id).map_err(|_| StellarSdkError::InvalidBalanceId)
21    }
22}
23
24impl<E: From<sp_std::str::Utf8Error>> crate::StellarTypeToString<Self, E> for ClaimableBalanceId {
25    fn as_encoded_string(&self) -> Result<String, E> {
26        let xdr = self.to_xdr();
27        Ok(hex::encode(xdr))
28    }
29}
30
31impl<E: From<sp_std::str::Utf8Error>> crate::StellarTypeToString<ClaimableBalanceId, E> for &str {
32    fn as_encoded_string(&self) -> Result<String, E> {
33        Ok(self.to_string())
34    }
35}