()
| 238 | RootPair { first, second } |
| 239 | } |
| 240 | |
| 241 | fn flip(self) -> RootPair<U, T> { |
| 242 | RootPair { |
| 243 | first: self.second, |
| 244 | second: self.first, |
| 245 | } |
| 246 | } |
| 247 | } |
| 248 | |
| 249 | struct RootMeter { |
| 250 | value: i32, |
| 251 | } |
| 252 | |
| 253 | trait RootMeasure { |
| 254 | fn read(&self) -> i32; |
| 255 | fn add(&mut self, value: i32); |
| 256 | } |
| 257 | |
| 258 | impl RootMeasure for RootMeter { |
| 259 | fn read(&self) -> i32 { |
| 260 | self.value |
| 261 | } |
| 262 | |
| 263 | fn add(&mut self, value: i32) { |
| 264 | self.value += value; |
| 265 | } |
| 266 | } |
| 267 | |
| 268 | fn root_identity<T>(value: T) -> T { |
| 269 | value |
| 270 | } |
| 271 | |
| 272 | fn root_swap<T, U>(left: T, right: U) -> (U, T) { |
| 273 | (right, left) |
| 274 | } |
| 275 | |
| 276 | fn root_add(left: i32, right: i32) -> i32 { |
| 277 | left + right |
| 278 | } |
| 279 | |
| 280 | fn root_skew(left: i32, right: i32) -> i32 { |
| 281 | left * 3 - right |
| 282 | } |
| 283 | |
| 284 | fn root_choose_op(addition: bool) -> fn(i32, i32) -> i32 { |
| 285 | if addition { root_add } else { root_skew } |
| 286 | } |
| 287 | |
| 288 | fn root_read_metric(metric: &dyn RootMeasure) -> i32 { |
| 289 | metric.read() |
| 290 | } |
| 291 | |
| 292 | fn root_add_metric(metric: &mut dyn RootMeasure, value: i32) -> i32 { |
| 293 | metric.add(value); |
| 294 | metric.read() |
| 295 | } |
| 296 | |
| 297 | fn root_closure_value(seed: i32) -> i32 { |
nothing calls this directly
no test coverage detected