Add the constructor idiom.

pull/3/head
Nick Cameron 9 years ago
parent f8b8d13e50
commit 248baabc14

@ -10,7 +10,7 @@ language.
### Idioms
* Constructor
* [Constructor](idioms/ctor.md)
### Design patterns

@ -0,0 +1,37 @@
# Contructors
## Description
Rust does not have constructors as a language construct. Instead, the convention
is to use a static `new` method to create an object.
## Example
```rust
// A Rust vector, see libcollections/vec.rs
pub struct Vec<T> {
buf: RawVec<T>,
len: usize,
}
impl<T> Vec<T> {
// Constructs a new, empty `Vec<T>`.
// Note this is a static method - no self.
// This constructor doesn't take any arguments, but some might in order to
// properly initialise an object
pub fn new() -> Vec<T> {
// Create a new Vec with fields properly initialised.
Vec {
// Note that here we are calling RawVec's constructor.
buf: RawVec::new(),
len: 0,
}
}
}
```
## See also
The builder pattern for constructing objects where there are multiple
configurations.
Loading…
Cancel
Save