#![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<Microdesc>,
+}
-#[derive(Builder,Debug)]
-#[builder(derive(Debug))]
-struct Contains {
- #[builder(sub_builder)]
- things: Vec<u32>,
+enum NetDirChange<'a> {
+ AddMicrodescs(&'a mut Vec<Microdesc>),
}
-#[derive(Debug,Default,Clone)]
-struct VecBuilder<T>(Option<Vec<T>>);
+fn netdir_add_microdesc(_: Microdesc) { }
+
+impl State {
+ fn get_netdir_change(&mut self) -> Option<NetDirChange<'_>> {
+ Some(NetDirChange::AddMicrodescs(&mut self.change))
+ }
+}
-impl VecBuilder<u32> {
- fn build(&self) -> Result<Vec<u32>, 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:?}");
+
}