The Builder Pattern in Rust is implemented by defining a struct with private fields and a separate builder struct that exposes setter methods to configure those fields before calling a build() method.
struct Server {
port: u16,
host: String,
}
struct ServerBuilder {
port: u16,
host: String,
}
impl ServerBuilder {
fn new() -> Self {
ServerBuilder { port: 8080, host: "127.0.0.1".to_string() }
}
fn port(mut self, port: u16) -> Self {
self.port = port;
self
}
fn host(mut self, host: String) -> Self {
self.host = host;
self
}
fn build(self) -> Server {
Server { port: self.port, host: self.host }
}
}
fn main() {
let server = ServerBuilder::new()
.port(7878)
.host("127.0.0.1".to_string())
.build();
}