Struct drop_guard::DropGuard[][src]

pub struct DropGuard<T, F: FnMut(T)> { /* fields omitted */ }
Expand description

The DropGuard will remain to Send and Sync from T.

Examples

The LinkedList<T> is Send. So the DropGuard will be too, but it will not be Sync:

use drop_guard::guard;
use std::collections::LinkedList;
use std::thread;

let list: LinkedList<u32> = LinkedList::new();

let a_list = guard(list, |_| {});

// Send the guarded list to another thread
thread::spawn(move || {
    assert_eq!(0, a_list.len());
}).join();

Implementations

👎 Deprecated:

use drop_guard::guard that is shorter

Creates a new guard taking in your data and a function.

use drop_guard::guard;

let s = String::from("a commonString");
let mut s = guard(s, |final_string| println!("s became {} at last", final_string));

// much code and time passes by ...
*s = "a rainbow".to_string();

// by the end of this function the String will have become a rainbow

Trait Implementations

Use the captured value.

use drop_guard::guard;

let val = guard(42usize, |_| {});
assert_eq!(42, *val);

The resulting type after dereferencing.

Dereferences the value.

Modify the captured value.

use drop_guard::guard;

let mut val = guard(vec![2, 3, 4], |_| {});
assert_eq!(3, val.len());

val.push(5);
assert_eq!(4, val.len());

Mutably dereferences the value.

React to dropping the value. In this example we measure the time the value is alive.

use drop_guard::guard;
use std::time::Instant;

let start_time = Instant::now();
let val = guard(42usize, |_| {
    let time_alive = start_time.elapsed();
    println!("value lived for {}ns", time_alive.subsec_nanos())
});
assert_eq!(42, *val);

Executes the destructor for this type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.