patterns/idioms/ctor.md
Sergey Kletsun 7c97e15988
Update ctor.md
Tiny spelling correction
2017-12-26 11:47:39 +02:00

885 B

Constructors

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

// 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.