sendfun_sdk/utils/
token.rs1#[must_use]
2pub fn parse_token_amount(data: &[u8]) -> Option<u64> {
3 const AMOUNT_OFFSET: usize = 64; let bytes: [u8; 8] = data
5 .get(AMOUNT_OFFSET..AMOUNT_OFFSET + 8)?
6 .try_into()
7 .ok()?;
8 Some(u64::from_le_bytes(bytes))
9}
10
11#[cfg(test)]
12mod tests {
13 use super::parse_token_amount;
14
15 #[test]
16 fn parse_token_amount_correct_offset() {
17 let mut data = vec![0u8; 165];
18 let expected: u64 = 1_000_000_000;
19 data[64..72].copy_from_slice(&expected.to_le_bytes());
20 assert_eq!(parse_token_amount(&data), Some(expected));
21 }
22
23 #[test]
24 fn parse_token_amount_too_short() {
25 let data = vec![0u8; 60];
26 assert_eq!(parse_token_amount(&data), None);
27 }
28}