Deprecate MaybeOwned[Vector] in favor of Cow

This commit is contained in:
Jorge Aparicio 2014-11-21 17:10:42 -05:00
parent 48ca6d1840
commit 3293ab14e2
21 changed files with 323 additions and 169 deletions

View file

@ -12,7 +12,7 @@
fn main() {
let r: Result<int,_> =
::std::task::TaskBuilder::new().named("send name".into_maybe_owned())
::std::task::TaskBuilder::new().named("send name".into_cow())
.try(proc() {
panic!("test");
3i

View file

@ -10,51 +10,51 @@
extern crate collections;
use std::str::{SendStr, Owned, Slice};
use std::collections::HashMap;
use std::option::Some;
use std::str::SendStr;
pub fn main() {
let mut map: HashMap<SendStr, uint> = HashMap::new();
assert!(map.insert(Slice("foo"), 42).is_none());
assert!(map.insert(Owned("foo".to_string()), 42).is_some());
assert!(map.insert(Slice("foo"), 42).is_some());
assert!(map.insert(Owned("foo".to_string()), 42).is_some());
assert!(map.insert("foo".into_cow(), 42).is_none());
assert!(map.insert("foo".to_string().into_cow(), 42).is_some());
assert!(map.insert("foo".into_cow(), 42).is_some());
assert!(map.insert("foo".to_string().into_cow(), 42).is_some());
assert!(map.insert(Slice("foo"), 43).is_some());
assert!(map.insert(Owned("foo".to_string()), 44).is_some());
assert!(map.insert(Slice("foo"), 45).is_some());
assert!(map.insert(Owned("foo".to_string()), 46).is_some());
assert!(map.insert("foo".into_cow(), 43).is_some());
assert!(map.insert("foo".to_string().into_cow(), 44).is_some());
assert!(map.insert("foo".into_cow(), 45).is_some());
assert!(map.insert("foo".to_string().into_cow(), 46).is_some());
let v = 46;
assert_eq!(map.get(&Owned("foo".to_string())), Some(&v));
assert_eq!(map.get(&Slice("foo")), Some(&v));
assert_eq!(map.get(&"foo".to_string().into_cow()), Some(&v));
assert_eq!(map.get(&"foo".into_cow()), Some(&v));
let (a, b, c, d) = (50, 51, 52, 53);
assert!(map.insert(Slice("abc"), a).is_none());
assert!(map.insert(Owned("bcd".to_string()), b).is_none());
assert!(map.insert(Slice("cde"), c).is_none());
assert!(map.insert(Owned("def".to_string()), d).is_none());
assert!(map.insert("abc".into_cow(), a).is_none());
assert!(map.insert("bcd".to_string().into_cow(), b).is_none());
assert!(map.insert("cde".into_cow(), c).is_none());
assert!(map.insert("def".to_string().into_cow(), d).is_none());
assert!(map.insert(Slice("abc"), a).is_some());
assert!(map.insert(Owned("bcd".to_string()), b).is_some());
assert!(map.insert(Slice("cde"), c).is_some());
assert!(map.insert(Owned("def".to_string()), d).is_some());
assert!(map.insert("abc".into_cow(), a).is_some());
assert!(map.insert("bcd".to_string().into_cow(), b).is_some());
assert!(map.insert("cde".into_cow(), c).is_some());
assert!(map.insert("def".to_string().into_cow(), d).is_some());
assert!(map.insert(Owned("abc".to_string()), a).is_some());
assert!(map.insert(Slice("bcd"), b).is_some());
assert!(map.insert(Owned("cde".to_string()), c).is_some());
assert!(map.insert(Slice("def"), d).is_some());
assert!(map.insert("abc".to_string().into_cow(), a).is_some());
assert!(map.insert("bcd".into_cow(), b).is_some());
assert!(map.insert("cde".to_string().into_cow(), c).is_some());
assert!(map.insert("def".into_cow(), d).is_some());
assert_eq!(map.find_equiv("abc"), Some(&a));
assert_eq!(map.find_equiv("bcd"), Some(&b));
assert_eq!(map.find_equiv("cde"), Some(&c));
assert_eq!(map.find_equiv("def"), Some(&d));
assert_eq!(map.get("abc"), Some(&a));
assert_eq!(map.get("bcd"), Some(&b));
assert_eq!(map.get("cde"), Some(&c));
assert_eq!(map.get("def"), Some(&d));
assert_eq!(map.find_equiv(&Slice("abc")), Some(&a));
assert_eq!(map.find_equiv(&Slice("bcd")), Some(&b));
assert_eq!(map.find_equiv(&Slice("cde")), Some(&c));
assert_eq!(map.find_equiv(&Slice("def")), Some(&d));
assert_eq!(map.get(&"abc".into_cow()), Some(&a));
assert_eq!(map.get(&"bcd".into_cow()), Some(&b));
assert_eq!(map.get(&"cde".into_cow()), Some(&c));
assert_eq!(map.get(&"def".into_cow()), Some(&d));
}

View file

@ -10,56 +10,56 @@
extern crate collections;
use std::str::{SendStr, Owned, Slice};
use std::string::ToString;
use self::collections::TreeMap;
use std::option::Some;
use std::str::SendStr;
use std::string::ToString;
pub fn main() {
let mut map: TreeMap<SendStr, uint> = TreeMap::new();
assert!(map.insert(Slice("foo"), 42).is_none());
assert!(map.insert(Owned("foo".to_string()), 42).is_some());
assert!(map.insert(Slice("foo"), 42).is_some());
assert!(map.insert(Owned("foo".to_string()), 42).is_some());
assert!(map.insert("foo".into_cow(), 42).is_none());
assert!(map.insert("foo".to_string().into_cow(), 42).is_some());
assert!(map.insert("foo".into_cow(), 42).is_some());
assert!(map.insert("foo".to_string().into_cow(), 42).is_some());
assert!(map.insert(Slice("foo"), 43).is_some());
assert!(map.insert(Owned("foo".to_string()), 44).is_some());
assert!(map.insert(Slice("foo"), 45).is_some());
assert!(map.insert(Owned("foo".to_string()), 46).is_some());
assert!(map.insert("foo".into_cow(), 43).is_some());
assert!(map.insert("foo".to_string().into_cow(), 44).is_some());
assert!(map.insert("foo".into_cow(), 45).is_some());
assert!(map.insert("foo".to_string().into_cow(), 46).is_some());
let v = 46;
assert_eq!(map.get(&Owned("foo".to_string())), Some(&v));
assert_eq!(map.get(&Slice("foo")), Some(&v));
assert_eq!(map.get(&"foo".to_string().into_cow()), Some(&v));
assert_eq!(map.get(&"foo".into_cow()), Some(&v));
let (a, b, c, d) = (50, 51, 52, 53);
assert!(map.insert(Slice("abc"), a).is_none());
assert!(map.insert(Owned("bcd".to_string()), b).is_none());
assert!(map.insert(Slice("cde"), c).is_none());
assert!(map.insert(Owned("def".to_string()), d).is_none());
assert!(map.insert("abc".into_cow(), a).is_none());
assert!(map.insert("bcd".to_string().into_cow(), b).is_none());
assert!(map.insert("cde".into_cow(), c).is_none());
assert!(map.insert("def".to_string().into_cow(), d).is_none());
assert!(map.insert(Slice("abc"), a).is_some());
assert!(map.insert(Owned("bcd".to_string()), b).is_some());
assert!(map.insert(Slice("cde"), c).is_some());
assert!(map.insert(Owned("def".to_string()), d).is_some());
assert!(map.insert("abc".into_cow(), a).is_some());
assert!(map.insert("bcd".to_string().into_cow(), b).is_some());
assert!(map.insert("cde".into_cow(), c).is_some());
assert!(map.insert("def".to_string().into_cow(), d).is_some());
assert!(map.insert(Owned("abc".to_string()), a).is_some());
assert!(map.insert(Slice("bcd"), b).is_some());
assert!(map.insert(Owned("cde".to_string()), c).is_some());
assert!(map.insert(Slice("def"), d).is_some());
assert!(map.insert("abc".to_string().into_cow(), a).is_some());
assert!(map.insert("bcd".into_cow(), b).is_some());
assert!(map.insert("cde".to_string().into_cow(), c).is_some());
assert!(map.insert("def".into_cow(), d).is_some());
assert_eq!(map.get(&Slice("abc")), Some(&a));
assert_eq!(map.get(&Slice("bcd")), Some(&b));
assert_eq!(map.get(&Slice("cde")), Some(&c));
assert_eq!(map.get(&Slice("def")), Some(&d));
assert_eq!(map.get(&"abc".into_cow()), Some(&a));
assert_eq!(map.get(&"bcd".into_cow()), Some(&b));
assert_eq!(map.get(&"cde".into_cow()), Some(&c));
assert_eq!(map.get(&"def".into_cow()), Some(&d));
assert_eq!(map.get(&Owned("abc".to_string())), Some(&a));
assert_eq!(map.get(&Owned("bcd".to_string())), Some(&b));
assert_eq!(map.get(&Owned("cde".to_string())), Some(&c));
assert_eq!(map.get(&Owned("def".to_string())), Some(&d));
assert_eq!(map.get(&"abc".to_string().into_cow()), Some(&a));
assert_eq!(map.get(&"bcd".to_string().into_cow()), Some(&b));
assert_eq!(map.get(&"cde".to_string().into_cow()), Some(&c));
assert_eq!(map.get(&"def".to_string().into_cow()), Some(&d));
assert!(map.remove(&Slice("foo")).is_some());
assert!(map.remove(&"foo".into_cow()).is_some());
assert_eq!(map.into_iter().map(|(k, v)| format!("{}{}", k, v))
.collect::<Vec<String>>()
.concat(),