snarkvm_ledger_puzzle/partial_solution/
string.rs1use super::*;
17
18impl<N: Network> FromStr for PartialSolution<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 PartialSolution<N> {
28 fn fmt(&self, f: &mut Formatter) -> fmt::Result {
30 Display::fmt(self, f)
31 }
32}
33
34impl<N: Network> Display for PartialSolution<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 expected = PartialSolution::new(rng.gen(), address, u64::rand(&mut rng)).unwrap();
56
57 let candidate = expected.to_string();
59 assert_eq!(expected, PartialSolution::from_str(&candidate)?);
60
61 Ok(())
62 }
63}