# fn unwrap_crayon(c: Crayon) -> int { 0 }
# fn eat_crayon_wax(i: int) { }
# fn store_crayon_in_nasal_cavity(i: uint, c: Crayon) { }
-# fn crayon_to_str(c: Crayon) -> ~str { ~"" }
+# fn crayon_to_str(c: Crayon) -> &str { "" }
let crayons = &[Almond, AntiqueBrass, Apricot];
~~~~
fn call_twice(f: fn()) { f(); f(); }
-call_twice(|| { ~"I am an inferred stack closure"; } );
-call_twice(fn&() { ~"I am also a stack closure"; } );
-call_twice(fn@() { ~"I am a managed closure"; });
-call_twice(fn~() { ~"I am an owned closure"; });
-fn bare_function() { ~"I am a plain function"; }
+call_twice(|| { "I am an inferred stack closure"; } );
+call_twice(fn&() { "I am also a stack closure"; } );
+call_twice(fn@() { "I am a managed closure"; });
+call_twice(fn~() { "I am an owned closure"; });
+fn bare_function() { "I am a plain function"; }
call_twice(bare_function);
~~~~
# use println = io::println;
each(&[2, 4, 8, 5, 16], |n| {
if *n % 2 != 0 {
- println(~"found odd number!");
+ println("found odd number!");
false
} else { true }
});
# use println = io::println;
for each(&[2, 4, 8, 5, 16]) |n| {
if *n % 2 != 0 {
- println(~"found odd number!");
+ println("found odd number!");
break;
}
}
fn print() { io::println(fmt!("%d", self)) }
}
-impl ~str: Printable {
+impl &str: Printable {
fn print() { io::println(self) }
}
# 1.print();
-# (~"foo").print();
+# ("foo").print();
~~~~
Methods defined in an implementation of a trait may be called just like
~~~~
mod farm {
- pub fn chicken() -> ~str { ~"cluck cluck" }
- pub fn cow() -> ~str { ~"mooo" }
+ pub fn chicken() -> &str { "cluck cluck" }
+ pub fn cow() -> &str { "mooo" }
}
fn main() {
~~~~
// world.rs
#[link(name = "world", vers = "1.0")];
-pub fn explore() -> ~str { ~"world" }
+pub fn explore() -> &str { "world" }
~~~~
~~~~ {.xfail-test}
// main.rs
extern mod world;
-fn main() { io::println(~"hello " + world::explore()); }
+fn main() { io::println("hello " + world::explore()); }
~~~~
Now compile and run like this (adjust to your platform if necessary):