about summary refs log tree commit diff
path: root/src/libstd/task
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-10-05 13:11:54 -0700
committerbors <bors@rust-lang.org>2013-10-05 13:11:54 -0700
commit0c388be8d1988a966ef62c545b996b9da0f71e93 (patch)
tree16f9b35567953a2fa86d56ffdec42ed8d493d9be /src/libstd/task
parent1506dac10faf4b48f3d3debb9b20f2f55352deca (diff)
parent517298de484b2a9c88689e8313bed5fde80acd79 (diff)
downloadrust-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.rs39
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();