Make Memo a wrapper for Box<[u8; 512]>
This commit is contained in:
parent
ea8fa5ef46
commit
99e3b16476
|
@ -9,8 +9,8 @@ use std::{cmp, convert::TryFrom, fmt};
|
||||||
/// recipient of the note.
|
/// recipient of the note.
|
||||||
///
|
///
|
||||||
/// [ps]: https://zips.z.cash/protocol/protocol.pdf#notept
|
/// [ps]: https://zips.z.cash/protocol/protocol.pdf#notept
|
||||||
#[derive(Clone, Copy)]
|
#[derive(Clone)]
|
||||||
pub struct Memo([u8; 512]);
|
pub struct Memo(Box<[u8; 512]>);
|
||||||
|
|
||||||
impl<'a> TryFrom<&'a [u8]> for Memo {
|
impl<'a> TryFrom<&'a [u8]> for Memo {
|
||||||
type Error = &'static str;
|
type Error = &'static str;
|
||||||
|
@ -21,11 +21,11 @@ impl<'a> TryFrom<&'a [u8]> for Memo {
|
||||||
match input.len().cmp(&512) {
|
match input.len().cmp(&512) {
|
||||||
cmp::Ordering::Less => {
|
cmp::Ordering::Less => {
|
||||||
full_bytes[0..input.len()].copy_from_slice(input);
|
full_bytes[0..input.len()].copy_from_slice(input);
|
||||||
Ok(Memo(full_bytes))
|
Ok(Memo(Box::new(full_bytes)))
|
||||||
}
|
}
|
||||||
cmp::Ordering::Equal => {
|
cmp::Ordering::Equal => {
|
||||||
full_bytes[..].copy_from_slice(input);
|
full_bytes[..].copy_from_slice(input);
|
||||||
Ok(Memo(full_bytes))
|
Ok(Memo(Box::new(full_bytes)))
|
||||||
}
|
}
|
||||||
cmp::Ordering::Greater => Err("Memos have a max length of 512 bytes."),
|
cmp::Ordering::Greater => Err("Memos have a max length of 512 bytes."),
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ impl fmt::Debug for Memo {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn memo_fmt() {
|
fn memo_fmt() {
|
||||||
let memo = Memo(
|
let memo = Memo(Box::new(
|
||||||
*b"thiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiis \
|
*b"thiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiis \
|
||||||
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiis \
|
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiis \
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \
|
||||||
|
@ -58,7 +58,7 @@ fn memo_fmt() {
|
||||||
looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong \
|
looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong \
|
||||||
meeeeeeeeeeeeeeeeeeemooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo \
|
meeeeeeeeeeeeeeeeeeemooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo \
|
||||||
but it's just short enough",
|
but it's just short enough",
|
||||||
);
|
));
|
||||||
|
|
||||||
assert_eq!(format!("{:?}", memo),
|
assert_eq!(format!("{:?}", memo),
|
||||||
"Memo(\"thiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiis iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiis aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeryyyyyyyyyyyyyyyyyyyyyyyyyy looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong meeeeeeeeeeeeeeeeeeemooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo but it\\\'s just short enough\")"
|
"Memo(\"thiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiis iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiis aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeryyyyyyyyyyyyyyyyyyyyyyyyyy looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong meeeeeeeeeeeeeeeeeeemooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo but it\\\'s just short enough\")"
|
||||||
|
@ -67,7 +67,7 @@ fn memo_fmt() {
|
||||||
let mut some_bytes = [0u8; 512];
|
let mut some_bytes = [0u8; 512];
|
||||||
some_bytes[0] = 0xF6;
|
some_bytes[0] = 0xF6;
|
||||||
|
|
||||||
assert_eq!(format!("{:?}", Memo(some_bytes)),
|
assert_eq!(format!("{:?}", Memo(Box::new(some_bytes))),
|
||||||
"Memo(\"f600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\")"
|
"Memo(\"f600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\")"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue