Skip to content

Commit 28218be

Browse files
committed
Utilize PhantomData to enforce !Sync and !Send field.
1 parent 444ff9f commit 28218be

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

src/libstd/sys/unix/os.rs

+7-6
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ use fmt;
2121
use io;
2222
use iter;
2323
use libc::{self, c_int, c_char, c_void};
24+
use marker::PhantomData;
2425
use mem;
2526
use memchr;
2627
use path::{self, PathBuf};
@@ -304,7 +305,7 @@ pub fn current_exe() -> io::Result<PathBuf> {
304305

305306
pub struct Args {
306307
iter: vec::IntoIter<OsString>,
307-
_dont_send_or_sync_me: *mut (),
308+
_dont_send_or_sync_me: PhantomData<*mut ()>,
308309
}
309310

310311
impl Iterator for Args {
@@ -342,7 +343,7 @@ pub fn args() -> Args {
342343
};
343344
Args {
344345
iter: vec.into_iter(),
345-
_dont_send_or_sync_me: ptr::null_mut(),
346+
_dont_send_or_sync_me: PhantomData,
346347
}
347348
}
348349

@@ -399,7 +400,7 @@ pub fn args() -> Args {
399400
}
400401
}
401402

402-
Args { iter: res.into_iter(), _dont_send_or_sync_me: ptr::null_mut() }
403+
Args { iter: res.into_iter(), _dont_send_or_sync_me: PhantomData }
403404
}
404405

405406
#[cfg(any(target_os = "linux",
@@ -418,12 +419,12 @@ pub fn args() -> Args {
418419
let v: Vec<OsString> = bytes.into_iter().map(|v| {
419420
OsStringExt::from_vec(v)
420421
}).collect();
421-
Args { iter: v.into_iter(), _dont_send_or_sync_me: ptr::null_mut() }
422+
Args { iter: v.into_iter(), _dont_send_or_sync_me: PhantomData }
422423
}
423424

424425
pub struct Env {
425426
iter: vec::IntoIter<(OsString, OsString)>,
426-
_dont_send_or_sync_me: *mut (),
427+
_dont_send_or_sync_me: PhantomData<*mut ()>,
427428
}
428429

429430
impl Iterator for Env {
@@ -464,7 +465,7 @@ pub fn env() -> Env {
464465
}
465466
let ret = Env {
466467
iter: result.into_iter(),
467-
_dont_send_or_sync_me: ptr::null_mut(),
468+
_dont_send_or_sync_me: PhantomData,
468469
};
469470
ENV_LOCK.unlock();
470471
return ret

0 commit comments

Comments
 (0)