Skip to main content

rustenium_cdp_definitions/browser_protocol/performance_timeline/
command_builders.rs

1use super::commands::*;
2impl Enable {
3    pub fn builder() -> EnableBuilder {
4        <EnableBuilder as Default>::default()
5    }
6}
7#[derive(Default, Clone)]
8pub struct EnableBuilder {
9    event_types: Option<Vec<String>>,
10}
11impl EnableBuilder {
12    pub fn event_type(mut self, event_type: impl Into<String>) -> Self {
13        let v = self.event_types.get_or_insert(Vec::new());
14        v.push(event_type.into());
15        self
16    }
17    pub fn event_types<I, S>(mut self, event_types: I) -> Self
18    where
19        I: IntoIterator<Item = S>,
20        S: Into<String>,
21    {
22        let v = self.event_types.get_or_insert(Vec::new());
23        for val in event_types {
24            v.push(val.into());
25        }
26        self
27    }
28    pub fn build(self) -> Result<Enable, String> {
29        Ok(Enable {
30            method: EnableMethod::Enable,
31            params: EnableParams {
32                event_types: self.event_types.ok_or_else(|| {
33                    format!("Field `{}` is mandatory.", std::stringify!(event_types))
34                })?,
35            },
36        })
37    }
38}