From 64106c4d3d4ddba8c7bc2af75376e6d3d3d75601 Mon Sep 17 00:00:00 2001
From:
Date: Mon, 29 Jun 2015 20:16:15 +0000
Subject: Update documentation
---
src/carboxyl/pending.rs.html | 271 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 271 insertions(+)
create mode 100644 src/carboxyl/pending.rs.html
(limited to 'src/carboxyl/pending.rs.html')
diff --git a/src/carboxyl/pending.rs.html b/src/carboxyl/pending.rs.html
new file mode 100644
index 0000000..6e0f11f
--- /dev/null
+++ b/src/carboxyl/pending.rs.html
@@ -0,0 +1,271 @@
+
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+
+
+
+use std::ops::Deref;
+
+
+
+
+
+pub struct Pending<T> {
+ current: T,
+ update: Option<T>,
+}
+
+impl<T> Pending<T> {
+
+ pub fn new(t: T) -> Pending<T> {
+ Pending { current: t, update: None }
+ }
+
+
+ pub fn queue(&mut self, new: T) {
+ self.update = Some(new);
+ }
+
+
+ pub fn update(&mut self) {
+ if let Some(t) = self.update.take() {
+ self.current = t;
+ }
+ }
+
+
+ pub fn future(&self) -> &T {
+ self.update.as_ref().unwrap_or(&self.current)
+ }
+}
+
+impl<T> Deref for Pending<T> {
+ type Target = T;
+ fn deref(&self) -> &T { &self.current }
+}
+
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn new_derefs_identical() {
+ assert_eq!(*Pending::new(3), 3);
+ }
+
+ #[test]
+ fn queue_does_not_affect_deref() {
+ let mut p = Pending::new(2);
+ p.queue(4);
+ assert_eq!(*p, 2);
+ }
+
+ #[test]
+ fn new_future_identical() {
+ assert_eq!(*Pending::new(5).future(), 5);
+ }
+
+ #[test]
+ fn queue_affects_future() {
+ let mut p = Pending::new(10);
+ p.queue(6);
+ assert_eq!(*p.future(), 6);
+ }
+
+ #[test]
+ fn updated_deref() {
+ let mut p = Pending::new(-2);
+ p.queue(2);
+ p.update();
+ assert_eq!(*p, 2);
+ }
+
+ #[test]
+ fn updated_future() {
+ let mut p = Pending::new(-7);
+ p.queue(0);
+ p.update();
+ assert_eq!(*p.future(), 0);
+ }
+}
+
+
+