trait is in scope) to pointers to the trait name, used as a type.
```
-# use std::boxed::Box;
# trait Shape { }
# impl Shape for int { }
# let mycircle = 0i;
Likewise, supertrait methods may also be called on trait objects.
```{.ignore}
-# use std::boxed::Box;
# trait Shape { fn area(&self) -> f64; }
# trait Circle : Shape { fn radius(&self) -> f64; }
# impl Shape for int { fn area(&self) -> f64 { 0.0 } }
An example of a *recursive* type and its use:
```
-# use std::boxed::Box;
enum List<T> {
Nil,
Cons(T, Box<List<T>>)
An example of an object type:
```
-# use std::boxed::Box;
trait Printable {
fn stringify(&self) -> String;
}
An example of a box type and value:
```
-# use std::boxed::Box;
let x: Box<int> = Box::new(10);
```
the source location cannot be used unless it is reinitialized.
```
-# use std::boxed::Box;
let x: Box<int> = Box::new(10);
let y = x;
// attempting to use `x` will result in an error here