snarkvm_ledger_puzzle/solution/
string.rs1use super::*;
17
18impl<N: Network> FromStr for Solution<N> {
19 type Err = Error;
20
21 fn from_str(solution: &str) -> Result<Self, Self::Err> {
23 Ok(serde_json::from_str(solution)?)
24 }
25}
26
27impl<N: Network> Debug for Solution<N> {
28 fn fmt(&self, f: &mut Formatter) -> fmt::Result {
30 Display::fmt(self, f)
31 }
32}
33
34impl<N: Network> Display for Solution<N> {
35 fn fmt(&self, f: &mut Formatter) -> fmt::Result {
37 write!(f, "{}", serde_json::to_string(self).map_err::<fmt::Error, _>(ser::Error::custom)?)
38 }
39}
40
41#[cfg(test)]
42mod tests {
43 use super::*;
44 use console::{account::PrivateKey, network::MainnetV0};
45
46 type CurrentNetwork = MainnetV0;
47
48 #[test]
49 fn test_string() -> Result<()> {
50 let mut rng = TestRng::default();
51 let private_key = PrivateKey::<CurrentNetwork>::new(&mut rng)?;
52 let address = Address::try_from(private_key)?;
53
54 let partial_solution = PartialSolution::new(rng.r#gen(), address, u64::rand(&mut rng)).unwrap();
56 let target = u64::rand(&mut rng);
57 let expected = Solution::new(partial_solution, target);
58
59 let candidate = expected.to_string();
61 assert_eq!(expected, Solution::from_str(&candidate)?);
62
63 Ok(())
64 }
65}