Skip to content

Commit

Permalink
Rollup merge of rust-lang#41008 - sagebind:thread_id, r=alexcrichton
Browse files Browse the repository at this point in the history
Derive Hash for ThreadId + better example

Derive `Hash` for `ThreadId` (see comments in rust-lang#21507). Useful for making maps based on thread, e.g. `HashMap<ThreadId, ?>`. Also update example code for thread IDs to be more useful.
  • Loading branch information
frewsxcv authored Apr 12, 2017
2 parents c6716db + cd14a32 commit 287cc59
Showing 1 changed file with 13 additions and 24 deletions.
37 changes: 13 additions & 24 deletions src/libstd/thread/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -652,8 +652,8 @@ pub fn park_timeout(dur: Duration) {
/// A unique identifier for a running thread.
///
/// A `ThreadId` is an opaque object that has a unique value for each thread
/// that creates one. `ThreadId`s do not correspond to a thread's system-
/// designated identifier.
/// that creates one. `ThreadId`s are not guaranteed to correspond to a thread's
/// system-designated identifier.
///
/// # Examples
///
Expand All @@ -662,17 +662,15 @@ pub fn park_timeout(dur: Duration) {
///
/// use std::thread;
///
/// let handler = thread::Builder::new()
/// .spawn(|| {
/// let thread = thread::current();
/// let thread_id = thread.id();
/// })
/// .unwrap();
/// let other_thread = thread::spawn(|| {
/// thread::current().id()
/// });
///
/// handler.join().unwrap();
/// let other_thread_id = other_thread.join().unwrap();
/// assert!(thread::current().id() != other_thread_id);
/// ```
#[unstable(feature = "thread_id", issue = "21507")]
#[derive(Eq, PartialEq, Copy, Clone)]
#[derive(Eq, PartialEq, Clone, Copy, Hash, Debug)]
pub struct ThreadId(u64);

impl ThreadId {
Expand Down Expand Up @@ -701,13 +699,6 @@ impl ThreadId {
}
}

#[unstable(feature = "thread_id", issue = "21507")]
impl fmt::Debug for ThreadId {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.pad("ThreadId { .. }")
}
}

////////////////////////////////////////////////////////////////////////////////
// Thread
////////////////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -795,14 +786,12 @@ impl Thread {
///
/// use std::thread;
///
/// let handler = thread::Builder::new()
/// .spawn(|| {
/// let thread = thread::current();
/// println!("thread id: {:?}", thread.id());
/// })
/// .unwrap();
/// let other_thread = thread::spawn(|| {
/// thread::current().id()
/// });
///
/// handler.join().unwrap();
/// let other_thread_id = other_thread.join().unwrap();
/// assert!(thread::current().id() != other_thread_id);
/// ```
#[unstable(feature = "thread_id", issue = "21507")]
pub fn id(&self) -> ThreadId {
Expand Down

0 comments on commit 287cc59

Please sign in to comment.