76:99ad55974e62 | 86:d5b0e496b72f |
---|---|
1 /*! | 1 /*! |
2 Aggregation / summarisation of information in branches of bisection trees. | 2 Aggregation / summarisation of information in branches of bisection trees. |
3 */ | 3 */ |
4 | 4 |
5 use serde::{Serialize, Deserialize}; | |
5 use crate::types::*; | 6 use crate::types::*; |
6 use crate::sets::Set; | 7 use crate::sets::Set; |
7 use crate::instance::Instance; | 8 use crate::instance::Instance; |
8 | 9 |
9 /// Trait for aggregating information about a branch of a [bisection tree][super::BT]. | 10 /// Trait for aggregating information about a branch of a [bisection tree][super::BT]. |
31 /// Create a new “empty” aggregate data. | 32 /// Create a new “empty” aggregate data. |
32 fn new() -> Self; | 33 fn new() -> Self; |
33 } | 34 } |
34 | 35 |
35 /// An [`Aggregator`] that doesn't aggregate anything. | 36 /// An [`Aggregator`] that doesn't aggregate anything. |
36 #[derive(Clone,Debug)] | 37 #[derive(Clone,Debug,Serialize,Deserialize)] |
37 pub struct NullAggregator; | 38 pub struct NullAggregator; |
38 | 39 |
39 impl Aggregator for NullAggregator { | 40 impl Aggregator for NullAggregator { |
40 fn aggregate<I>(&mut self, _aggregates : I) | 41 fn aggregate<I>(&mut self, _aggregates : I) |
41 where I : Iterator<Item=Self> {} | 42 where I : Iterator<Item=Self> {} |
45 | 46 |
46 fn new() -> Self { NullAggregator } | 47 fn new() -> Self { NullAggregator } |
47 } | 48 } |
48 | 49 |
49 /// Upper and lower bounds on an `F`-valued function. | 50 /// Upper and lower bounds on an `F`-valued function. |
50 #[derive(Copy,Clone,Debug)] | 51 #[derive(Copy,Clone,Debug,Serialize,Deserialize)] |
51 pub struct Bounds<F>( | 52 pub struct Bounds<F>( |
52 /// Lower bound | 53 /// Lower bound |
53 pub F, | 54 pub F, |
54 /// Upper bound | 55 /// Upper bound |
55 pub F | 56 pub F |