RustのSendStr
RustにはEnum std::send_str::SendStrがあって、これは送信可能な文字列型である~strか&'static strのどちらかを保持する。Trait std::send_str::IntoSendStrのメソッド fn into_send_str(self) -> SendStr を使って、それらをSendStrに変換できる。
例のFizzBuzzで使ってみる。
extern mod extra; fn main() { let (port, chan) = std::comm::SharedChan::new(); for i in range(0, 100) { let chan = chan.clone(); do spawn { let i = i + 1; let b = match (i % 3, i % 5) { (0, 0) => "FizzBuzz".into_send_str(), (0, _) => "Fizz".into_send_str(), (_, 0) => "Buzz".into_send_str(), _ => i.to_str().into_send_str() }; chan.send((i, b)); } } let mut res = ~[]; for _ in range(0, 100) { res.push(port.recv()); } res.sort_by(|t, u| t.first().cmp(&u.first())); for t in res.iter() { println!("{}", t.second().into_owned()); } }
ちょっと書き換えるだけです。
あと、HEADではEnum std::str::MaybeOwnedに改名しているので注意。