diff --git a/src/libstd/unstable/finally.rs b/src/libcore/finally.rs similarity index 94% rename from src/libstd/unstable/finally.rs rename to src/libcore/finally.rs index 3d00c0ac74a6..6d02e6e3a17d 100644 --- a/src/libstd/unstable/finally.rs +++ b/src/libcore/finally.rs @@ -30,11 +30,17 @@ use std::unstable::finally::Finally; ``` */ +#![experimental] + use ops::Drop; #[cfg(test)] use task::failing; +/// A trait for executing a destructor unconditionally after a block of code, +/// regardless of whether the blocked fails. pub trait Finally { + /// Executes this object, unconditionally running `dtor` after this block of + /// code has run. fn finally(&mut self, dtor: ||) -> T; } diff --git a/src/libcore/lib.rs b/src/libcore/lib.rs index dd64148aa2b0..5206ba1f32a8 100644 --- a/src/libcore/lib.rs +++ b/src/libcore/lib.rs @@ -37,4 +37,5 @@ pub mod container; /* Core types and methods on primitives */ +pub mod finally; pub mod char; diff --git a/src/libstd/unstable/mod.rs b/src/libstd/unstable/mod.rs index 372fcc396b13..81aa5506ed89 100644 --- a/src/libstd/unstable/mod.rs +++ b/src/libstd/unstable/mod.rs @@ -13,9 +13,10 @@ use prelude::*; use libc::uintptr_t; +pub use core::finally; + pub mod dynamic_lib; -pub mod finally; pub mod simd; pub mod sync; pub mod mutex;