diff options
| author | Graydon Hoare <graydon@mozilla.com> | 2013-07-17 16:33:38 -0700 |
|---|---|---|
| committer | Graydon Hoare <graydon@mozilla.com> | 2013-07-23 15:23:02 -0700 |
| commit | 9a093ab70a7d7b12e9cddf644e1a975375937465 (patch) | |
| tree | 5347cb55cd5f3b455dd2bc7f4fa37528e1355494 /src/libextra | |
| parent | d5803e67eecda097932424a6c7b52cd1addd76b9 (diff) | |
| download | rust-9a093ab70a7d7b12e9cddf644e1a975375937465.tar.gz rust-9a093ab70a7d7b12e9cddf644e1a975375937465.zip | |
extra: change workcache::Work::unwrap to move out of self.
Diffstat (limited to 'src/libextra')
| -rw-r--r-- | src/libextra/workcache.rs | 44 |
1 files changed, 18 insertions, 26 deletions
diff --git a/src/libextra/workcache.rs b/src/libextra/workcache.rs index 9825a20e86c..191dd6460cd 100644 --- a/src/libextra/workcache.rs +++ b/src/libextra/workcache.rs @@ -330,37 +330,29 @@ impl<T:Send + pub fn new(p: @mut Prep, e: Either<T,PortOne<(Exec,T)>>) -> Work<T> { Work { prep: p, res: Some(e) } } -} -// FIXME (#3724): movable self. This should be in impl Work. -fn unwrap<T:Send + - Encodable<json::Encoder> + - Decodable<json::Decoder>>( // FIXME(#5121) - w: Work<T>) -> T { - let mut ww = w; - let s = ww.res.take(); - - match s { - None => fail!(), - Some(Left(v)) => v, - Some(Right(port)) => { - let (exe, v) = recv_one(port); - - let s = json_encode(&v); - - let p = &*ww.prep; - do p.ctxt.db.write |db| { - db.cache(p.fn_name, - &p.declared_inputs, - &exe.discovered_inputs, - &exe.discovered_outputs, - s); + pub fn unwrap(self) -> T { + let Work { prep, res } = self; + match res { + None => fail!(), + Some(Left(v)) => v, + Some(Right(port)) => { + let (exe, v) = recv_one(port); + let s = json_encode(&v); + do prep.ctxt.db.write |db| { + db.cache(prep.fn_name, + &prep.declared_inputs, + &exe.discovered_inputs, + &exe.discovered_outputs, + s); + } + v } - v } } } + //#[test] fn test() { use std::io::WriterUtil; @@ -385,6 +377,6 @@ fn test() { out.to_str() } }; - let s = unwrap(w); + let s = w.unwrap(); io::println(s); } |
