diff options
| author | bors <bors@rust-lang.org> | 2013-10-05 13:11:54 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-10-05 13:11:54 -0700 |
| commit | 0c388be8d1988a966ef62c545b996b9da0f71e93 (patch) | |
| tree | 16f9b35567953a2fa86d56ffdec42ed8d493d9be /src/libstd/task | |
| parent | 1506dac10faf4b48f3d3debb9b20f2f55352deca (diff) | |
| parent | 517298de484b2a9c88689e8313bed5fde80acd79 (diff) | |
| download | rust-0c388be8d1988a966ef62c545b996b9da0f71e93.tar.gz rust-0c388be8d1988a966ef62c545b996b9da0f71e93.zip | |
auto merge of #9731 : Kimundi/rust/SendStrTaskName, r=alexcrichton
This resolves a FIXME in `std::rt::task`.
Diffstat (limited to 'src/libstd/task')
| -rw-r--r-- | src/libstd/task/mod.rs | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/src/libstd/task/mod.rs b/src/libstd/task/mod.rs index 74fcccc70e5..8e5353341ea 100644 --- a/src/libstd/task/mod.rs +++ b/src/libstd/task/mod.rs @@ -63,6 +63,7 @@ use rt::in_green_task_context; use rt::local::Local; use unstable::finally::Finally; use util; +use send_str::{SendStr, IntoSendStr}; #[cfg(test)] use cast; #[cfg(test)] use comm::SharedChan; @@ -148,7 +149,7 @@ pub struct TaskOpts { watched: bool, indestructible: bool, notify_chan: Option<Chan<TaskResult>>, - name: Option<~str>, + name: Option<SendStr>, sched: SchedOpts, stack_size: Option<uint> } @@ -295,8 +296,8 @@ impl TaskBuilder { /// Name the task-to-be. Currently the name is used for identification /// only in failure messages. - pub fn name(&mut self, name: ~str) { - self.opts.name = Some(name); + pub fn name<S: IntoSendStr>(&mut self, name: S) { + self.opts.name = Some(name.into_send_str()); } /// Configure a custom scheduler mode for the task. @@ -944,7 +945,7 @@ fn test_unnamed_task() { } #[test] -fn test_named_task() { +fn test_owned_named_task() { use rt::test::run_in_newsched_task; do run_in_newsched_task { @@ -959,6 +960,36 @@ fn test_named_task() { } #[test] +fn test_static_named_task() { + use rt::test::run_in_newsched_task; + + do run_in_newsched_task { + let mut t = task(); + t.name("ada lovelace"); + do t.spawn { + do with_task_name |name| { + assert!(name.unwrap() == "ada lovelace"); + } + } + } +} + +#[test] +fn test_send_named_task() { + use rt::test::run_in_newsched_task; + + do run_in_newsched_task { + let mut t = task(); + t.name("ada lovelace".into_send_str()); + do t.spawn { + do with_task_name |name| { + assert!(name.unwrap() == "ada lovelace"); + } + } + } +} + +#[test] fn test_run_basic() { let (po, ch) = stream::<()>(); let mut builder = task(); |
