2015-08-31 04:24:23 +00:00
|
|
|
# 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
|
|
|
|
|
2015-10-15 02:12:37 +00:00
|
|
|
The [builder pattern](../patterns/builder.md) for constructing objects where there are multiple
|
2015-08-31 04:24:23 +00:00
|
|
|
configurations.
|