std: unbox closures used in function arguments
This commit is contained in:
parent
a17c2b60e1
commit
371f04d433
@ -334,7 +334,7 @@ pub fn set_stderr(stderr: Box<Writer + Send>) -> Option<Box<Writer + Send>> {
|
||||
// // io1 aliases io2
|
||||
// })
|
||||
// })
|
||||
fn with_task_stdout(f: |&mut Writer| -> IoResult<()>) {
|
||||
fn with_task_stdout<F>(f: F) where F: FnOnce(&mut Writer) -> IoResult<()> {
|
||||
let mut my_stdout = LOCAL_STDOUT.with(|slot| {
|
||||
slot.borrow_mut().take()
|
||||
}).unwrap_or_else(|| {
|
||||
|
@ -174,7 +174,7 @@ impl Task {
|
||||
///
|
||||
/// It is invalid to call this function with a thread that has been previously
|
||||
/// destroyed via a failed call to `run`.
|
||||
pub fn run(mut self: Box<Task>, f: ||) -> Box<Task> {
|
||||
pub fn run<F>(mut self: Box<Task>, f: F) -> Box<Task> where F: FnOnce() {
|
||||
assert!(!self.is_destroyed(), "cannot re-use a destroyed thread");
|
||||
|
||||
// First, make sure that no one else is in TLS. This does not allow
|
||||
|
@ -26,13 +26,13 @@ struct ThreadInfo {
|
||||
thread_local! { static THREAD_INFO: RefCell<Option<ThreadInfo>> = RefCell::new(None) }
|
||||
|
||||
impl ThreadInfo {
|
||||
fn with<R>(f: |&mut ThreadInfo| -> R) -> R {
|
||||
fn with<R, F>(f: F) -> R where F: FnOnce(&mut ThreadInfo) -> R {
|
||||
if THREAD_INFO.destroyed() {
|
||||
panic!("Use of std::thread::Thread::current() is not possible after \
|
||||
the thread's local data has been destroyed");
|
||||
}
|
||||
|
||||
THREAD_INFO.with(|c| {
|
||||
THREAD_INFO.with(move |c| {
|
||||
if c.borrow().is_none() {
|
||||
*c.borrow_mut() = Some(ThreadInfo {
|
||||
stack_bounds: (0, 0),
|
||||
|
@ -124,7 +124,9 @@ pub unsafe fn pipe() -> IoResult<(FileDesc, FileDesc)> {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn fill_utf16_buf_and_decode(f: |*mut u16, DWORD| -> DWORD) -> Option<String> {
|
||||
pub fn fill_utf16_buf_and_decode<F>(mut f: F) -> Option<String> where
|
||||
F: FnMut(*mut u16, DWORD) -> DWORD,
|
||||
{
|
||||
unsafe {
|
||||
let mut n = TMPBUF_SZ as DWORD;
|
||||
let mut res = None;
|
||||
|
Loading…
Reference in New Issue
Block a user