std: Change Finally to take &mut self
As with the previous commits, the Finally trait is primarily implemented for closures, so the trait was modified from `&self` to `&mut self`. This will require that any closure variable invoked with `finally` to be stored in a mutable slot. [breaking-change]
This commit is contained in:
parent
2b2d1e14c9
commit
b4ecbe9340
2 changed files with 6 additions and 6 deletions
|
|
@ -109,7 +109,7 @@ impl Task {
|
|||
/// This function is *not* meant to be abused as a "try/catch" block. This
|
||||
/// is meant to be used at the absolute boundaries of a task's lifetime, and
|
||||
/// only for that purpose.
|
||||
pub fn run(~self, f: ||) -> ~Task {
|
||||
pub fn run(~self, mut f: ||) -> ~Task {
|
||||
// Need to put ourselves into TLS, but also need access to the unwinder.
|
||||
// Unsafely get a handle to the task so we can continue to use it after
|
||||
// putting it in tls (so we can invoke the unwinder).
|
||||
|
|
|
|||
|
|
@ -35,19 +35,19 @@ use ops::Drop;
|
|||
#[cfg(test)] use task::failing;
|
||||
|
||||
pub trait Finally<T> {
|
||||
fn finally(&self, dtor: ||) -> T;
|
||||
fn finally(&mut self, dtor: ||) -> T;
|
||||
}
|
||||
|
||||
impl<'a,T> Finally<T> for ||: 'a -> T {
|
||||
fn finally(&self, dtor: ||) -> T {
|
||||
try_finally(&mut (), (),
|
||||
|_, _| (*self)(),
|
||||
fn finally(&mut self, dtor: ||) -> T {
|
||||
try_finally(&mut (), self,
|
||||
|_, f| (*f)(),
|
||||
|_| dtor())
|
||||
}
|
||||
}
|
||||
|
||||
impl<T> Finally<T> for fn() -> T {
|
||||
fn finally(&self, dtor: ||) -> T {
|
||||
fn finally(&mut self, dtor: ||) -> T {
|
||||
try_finally(&mut (), (),
|
||||
|_, _| (*self)(),
|
||||
|_| dtor())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue