| 50 | type Error = String; |
| 51 | |
| 52 | fn try_from(s: String) -> Result<Self, Self::Error> { |
| 53 | for variant in CommitmentMessageId::iter() { |
| 54 | if s == variant.to_string() { |
| 55 | return Ok(variant); |
| 56 | } else if s.starts_with(&format!("Groth16IntermediateValues{}", VAL_SEPARATOR)) { |
| 57 | let parts: Vec<_> = s.split(VAL_SEPARATOR).collect(); |
| 58 | if parts.len() != 3 { |
| 59 | return Err(format!("Invalid Groth16IntermediateValues format: {}", s)); |
| 60 | } |
| 61 | let variable_name = parts[1].to_string(); |
| 62 | let size = parts[2] |
| 63 | .parse::<usize>() |
| 64 | .map_err(|e| format!("Invalid size in Groth16IntermediateValues: {}", e))?; |
| 65 | |
| 66 | return Ok(CommitmentMessageId::Groth16IntermediateValues(( |
| 67 | variable_name, |
| 68 | size, |
| 69 | ))); |
| 70 | } |
| 71 | } |
| 72 | |
| 73 | Err(format!("Unknown CommitmentMessageId: {}", s)) |
| 74 | } |
| 75 | } |
| 76 | |
| 77 | impl CommitmentMessageId { |