From 8dda83ff4abb9bd65cc296f65b52213890a136ef Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 11 May 2022 14:58:34 +0100 Subject: [PATCH] Repro --- src/main.rs | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/src/main.rs b/src/main.rs index d5e3d21..2fc1fe7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,28 +1,35 @@ #![allow(dead_code)] -#![allow(unused_mut)] -#![allow(unused_imports)] -use derive_builder::Builder; -use std::io; +struct Microdesc; -use serde::{Serialize, Deserialize}; +struct State { + change: Vec, +} -#[derive(Builder,Debug)] -#[builder(derive(Debug))] -struct Contains { - #[builder(sub_builder)] - things: Vec, +enum NetDirChange<'a> { + AddMicrodescs(&'a mut Vec), } -#[derive(Debug,Default,Clone)] -struct VecBuilder(Option>); +fn netdir_add_microdesc(_: Microdesc) { } + +impl State { + fn get_netdir_change(&mut self) -> Option> { + Some(NetDirChange::AddMicrodescs(&mut self.change)) + } +} -impl VecBuilder { - fn build(&self) -> Result, io::Error> { Ok(vec![]) } +fn apply_netdir_changes(mut state: State) { + if let Some(change) = state.get_netdir_change() { + match change { + NetDirChange::AddMicrodescs(mds) => { + for md in mds.drain(..) { + netdir_add_microdesc(md); + } + } + } + } } fn main() { - let cb = ContainsBuilder::default(); - let c = cb.build(); - println!("cb={cb:?} c={c:?}"); + } -- 2.30.2