trading_client/datastructures/
config.rs

1/* Immutable configuration object. */
2pub struct Config {
3    pub alpaca_base_url: String,
4    pub alpaca_api_key: String,
5    pub alpaca_secret_key: String,
6}
7
8impl Config {
9    pub fn builder() -> ConfigBuilder {
10        ConfigBuilder::default()
11    }
12}
13
14/* Creates the final config object.  */
15#[derive(Default)]
16pub struct ConfigBuilder {
17    alpaca_base_url: String,
18    alpaca_api_key: String,
19    alpaca_secret_key: String,
20}
21
22impl ConfigBuilder {
23    /// Determines whether the alpaca client is doing real or paper trading.
24    pub fn alpaca_base_url(mut self, alpaca_base_url: String) -> Self {
25        self.alpaca_base_url = alpaca_base_url;
26        self
27    }
28    pub fn alpaca_api_key(mut self, alpaca_api_key: String) -> Self {
29        self.alpaca_api_key = alpaca_api_key;
30        self
31    }
32
33    pub fn alpaca_secret_key(mut self, alpaca_secret_key: String) -> Self {
34        self.alpaca_secret_key = alpaca_secret_key;
35        self
36    }
37
38    pub fn build(self) -> Config {
39        Config {
40            alpaca_base_url: self.alpaca_base_url,
41            alpaca_api_key: self.alpaca_api_key,
42            alpaca_secret_key: self.alpaca_secret_key,
43        }
44    }
45}