about summary refs log tree commit diff
path: root/src/libstd/task
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstd/task')
-rw-r--r--src/libstd/task/mod.rs24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/libstd/task/mod.rs b/src/libstd/task/mod.rs
index 74fcccc70e5..315b11cac08 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,21 @@ 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_run_basic() {
     let (po, ch) = stream::<()>();
     let mut builder = task();