Serialize: mask (Tag0) + field values in mask order.
(&self, buf: &mut Vec<u8>)
| 333 | buf.push(u8::from(b)); |
| 334 | } |
| 335 | |
| 336 | fn get_bool_field(buf: &mut &[u8]) -> Result<bool, String> { |
| 337 | match get_u8(buf)? { |
| 338 | 0 => Ok(false), |
| 339 | 1 => Ok(true), |
| 340 | x => Err(format!("get_bool_field: invalid {x}")), |
| 341 | } |
| 342 | } |
| 343 | |
| 344 | // ============================================================================ |
| 345 | // RevealConstructorInfo serialization |
| 346 | // ============================================================================ |
| 347 | |
| 348 | impl RevealConstructorInfo { |
| 349 | /// Serialize: mask (Tag0) + field values in mask order. |
| 350 | pub fn put(&self, buf: &mut Vec<u8>) { |
| 351 | let mask = compute_mask(&[ |
| 352 | self.is_unsafe.is_some(), |
| 353 | self.lvls.is_some(), |
| 354 | self.cidx.is_some(), |
| 355 | self.params.is_some(), |
| 356 | self.fields.is_some(), |
| 357 | self.typ.is_some(), |
| 358 | ]); |
| 359 | Tag0::new(mask).put(buf); |
| 360 | if let Some(u) = self.is_unsafe { |
| 361 | put_bool_field(u, buf); |
| 362 | } |
| 363 | if let Some(l) = self.lvls { |
| 364 | Tag0::new(l).put(buf); |
| 365 | } |
| 366 | if let Some(c) = self.cidx { |