#[non_exhaustive]pub struct Selectors {
pub query: Option<String>,
pub rule_types: Option<Vec<RuleTypesItems>>,
pub severities: Option<Vec<RuleSeverity>>,
pub trigger_source: TriggerSource,
pub additional_properties: BTreeMap<String, Value>,
/* private fields */
}
Expand description
Selectors are used to filter security issues for which notifications should be generated. Users can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source. Only the trigger_source field is required.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.query: Option<String>
The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.
rule_types: Option<Vec<RuleTypesItems>>
Security rule types used as filters in security rules.
severities: Option<Vec<RuleSeverity>>
The security rules severities to consider.
trigger_source: TriggerSource
The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source “security_signals”, while notification rules based on security vulnerabilities need to use the trigger source “security_findings”.
additional_properties: BTreeMap<String, Value>
Implementations§
Source§impl Selectors
impl Selectors
Sourcepub fn new(trigger_source: TriggerSource) -> Selectors
pub fn new(trigger_source: TriggerSource) -> Selectors
Examples found in repository?
examples/v2_security-monitoring_CreateSignalNotificationRule.rs (line 20)
15async fn main() {
16 let body =
17 CreateNotificationRuleParameters::new().data(CreateNotificationRuleParametersData::new(
18 CreateNotificationRuleParametersDataAttributes::new(
19 "Rule 1".to_string(),
20 Selectors::new(TriggerSource::SECURITY_FINDINGS)
21 .query("(source:production_service OR env:prod)".to_string())
22 .rule_types(vec![
23 RuleTypesItems::MISCONFIGURATION,
24 RuleTypesItems::ATTACK_PATH,
25 ])
26 .severities(vec![RuleSeverity::CRITICAL]),
27 vec!["@john.doe@email.com".to_string()],
28 )
29 .enabled(true)
30 .time_aggregation(86400),
31 NotificationRulesType::NOTIFICATION_RULES,
32 ));
33 let configuration = datadog::Configuration::new();
34 let api = SecurityMonitoringAPI::with_config(configuration);
35 let resp = api.create_signal_notification_rule(body).await;
36 if let Ok(value) = resp {
37 println!("{:#?}", value);
38 } else {
39 println!("{:#?}", resp.unwrap_err());
40 }
41}
More examples
examples/v2_security-monitoring_CreateVulnerabilityNotificationRule.rs (line 20)
15async fn main() {
16 let body =
17 CreateNotificationRuleParameters::new().data(CreateNotificationRuleParametersData::new(
18 CreateNotificationRuleParametersDataAttributes::new(
19 "Rule 1".to_string(),
20 Selectors::new(TriggerSource::SECURITY_FINDINGS)
21 .query("(source:production_service OR env:prod)".to_string())
22 .rule_types(vec![
23 RuleTypesItems::MISCONFIGURATION,
24 RuleTypesItems::ATTACK_PATH,
25 ])
26 .severities(vec![RuleSeverity::CRITICAL]),
27 vec!["@john.doe@email.com".to_string()],
28 )
29 .enabled(true)
30 .time_aggregation(86400),
31 NotificationRulesType::NOTIFICATION_RULES,
32 ));
33 let configuration = datadog::Configuration::new();
34 let api = SecurityMonitoringAPI::with_config(configuration);
35 let resp = api.create_vulnerability_notification_rule(body).await;
36 if let Ok(value) = resp {
37 println!("{:#?}", value);
38 } else {
39 println!("{:#?}", resp.unwrap_err());
40 }
41}
examples/v2_security-monitoring_PatchSignalNotificationRule.rs (line 25)
15async fn main() {
16 // there is a valid "valid_signal_notification_rule" in the system
17 let valid_signal_notification_rule_data_id =
18 std::env::var("VALID_SIGNAL_NOTIFICATION_RULE_DATA_ID").unwrap();
19 let body =
20 PatchNotificationRuleParameters::new().data(PatchNotificationRuleParametersData::new(
21 PatchNotificationRuleParametersDataAttributes::new()
22 .enabled(true)
23 .name("Rule 1".to_string())
24 .selectors(
25 Selectors::new(TriggerSource::SECURITY_FINDINGS)
26 .query("(source:production_service OR env:prod)".to_string())
27 .rule_types(vec![
28 RuleTypesItems::MISCONFIGURATION,
29 RuleTypesItems::ATTACK_PATH,
30 ])
31 .severities(vec![RuleSeverity::CRITICAL]),
32 )
33 .targets(vec!["@john.doe@email.com".to_string()])
34 .time_aggregation(86400)
35 .version(1),
36 valid_signal_notification_rule_data_id.clone(),
37 NotificationRulesType::NOTIFICATION_RULES,
38 ));
39 let configuration = datadog::Configuration::new();
40 let api = SecurityMonitoringAPI::with_config(configuration);
41 let resp = api
42 .patch_signal_notification_rule(valid_signal_notification_rule_data_id.clone(), body)
43 .await;
44 if let Ok(value) = resp {
45 println!("{:#?}", value);
46 } else {
47 println!("{:#?}", resp.unwrap_err());
48 }
49}
examples/v2_security-monitoring_PatchVulnerabilityNotificationRule.rs (line 25)
15async fn main() {
16 // there is a valid "valid_vulnerability_notification_rule" in the system
17 let valid_vulnerability_notification_rule_data_id =
18 std::env::var("VALID_VULNERABILITY_NOTIFICATION_RULE_DATA_ID").unwrap();
19 let body =
20 PatchNotificationRuleParameters::new().data(PatchNotificationRuleParametersData::new(
21 PatchNotificationRuleParametersDataAttributes::new()
22 .enabled(true)
23 .name("Rule 1".to_string())
24 .selectors(
25 Selectors::new(TriggerSource::SECURITY_FINDINGS)
26 .query("(source:production_service OR env:prod)".to_string())
27 .rule_types(vec![
28 RuleTypesItems::MISCONFIGURATION,
29 RuleTypesItems::ATTACK_PATH,
30 ])
31 .severities(vec![RuleSeverity::CRITICAL]),
32 )
33 .targets(vec!["@john.doe@email.com".to_string()])
34 .time_aggregation(86400)
35 .version(1),
36 valid_vulnerability_notification_rule_data_id.clone(),
37 NotificationRulesType::NOTIFICATION_RULES,
38 ));
39 let configuration = datadog::Configuration::new();
40 let api = SecurityMonitoringAPI::with_config(configuration);
41 let resp = api
42 .patch_vulnerability_notification_rule(
43 valid_vulnerability_notification_rule_data_id.clone(),
44 body,
45 )
46 .await;
47 if let Ok(value) = resp {
48 println!("{:#?}", value);
49 } else {
50 println!("{:#?}", resp.unwrap_err());
51 }
52}
Sourcepub fn query(self, value: String) -> Self
pub fn query(self, value: String) -> Self
Examples found in repository?
examples/v2_security-monitoring_CreateSignalNotificationRule.rs (line 21)
15async fn main() {
16 let body =
17 CreateNotificationRuleParameters::new().data(CreateNotificationRuleParametersData::new(
18 CreateNotificationRuleParametersDataAttributes::new(
19 "Rule 1".to_string(),
20 Selectors::new(TriggerSource::SECURITY_FINDINGS)
21 .query("(source:production_service OR env:prod)".to_string())
22 .rule_types(vec![
23 RuleTypesItems::MISCONFIGURATION,
24 RuleTypesItems::ATTACK_PATH,
25 ])
26 .severities(vec![RuleSeverity::CRITICAL]),
27 vec!["@john.doe@email.com".to_string()],
28 )
29 .enabled(true)
30 .time_aggregation(86400),
31 NotificationRulesType::NOTIFICATION_RULES,
32 ));
33 let configuration = datadog::Configuration::new();
34 let api = SecurityMonitoringAPI::with_config(configuration);
35 let resp = api.create_signal_notification_rule(body).await;
36 if let Ok(value) = resp {
37 println!("{:#?}", value);
38 } else {
39 println!("{:#?}", resp.unwrap_err());
40 }
41}
More examples
examples/v2_security-monitoring_CreateVulnerabilityNotificationRule.rs (line 21)
15async fn main() {
16 let body =
17 CreateNotificationRuleParameters::new().data(CreateNotificationRuleParametersData::new(
18 CreateNotificationRuleParametersDataAttributes::new(
19 "Rule 1".to_string(),
20 Selectors::new(TriggerSource::SECURITY_FINDINGS)
21 .query("(source:production_service OR env:prod)".to_string())
22 .rule_types(vec![
23 RuleTypesItems::MISCONFIGURATION,
24 RuleTypesItems::ATTACK_PATH,
25 ])
26 .severities(vec![RuleSeverity::CRITICAL]),
27 vec!["@john.doe@email.com".to_string()],
28 )
29 .enabled(true)
30 .time_aggregation(86400),
31 NotificationRulesType::NOTIFICATION_RULES,
32 ));
33 let configuration = datadog::Configuration::new();
34 let api = SecurityMonitoringAPI::with_config(configuration);
35 let resp = api.create_vulnerability_notification_rule(body).await;
36 if let Ok(value) = resp {
37 println!("{:#?}", value);
38 } else {
39 println!("{:#?}", resp.unwrap_err());
40 }
41}
examples/v2_security-monitoring_PatchSignalNotificationRule.rs (line 26)
15async fn main() {
16 // there is a valid "valid_signal_notification_rule" in the system
17 let valid_signal_notification_rule_data_id =
18 std::env::var("VALID_SIGNAL_NOTIFICATION_RULE_DATA_ID").unwrap();
19 let body =
20 PatchNotificationRuleParameters::new().data(PatchNotificationRuleParametersData::new(
21 PatchNotificationRuleParametersDataAttributes::new()
22 .enabled(true)
23 .name("Rule 1".to_string())
24 .selectors(
25 Selectors::new(TriggerSource::SECURITY_FINDINGS)
26 .query("(source:production_service OR env:prod)".to_string())
27 .rule_types(vec![
28 RuleTypesItems::MISCONFIGURATION,
29 RuleTypesItems::ATTACK_PATH,
30 ])
31 .severities(vec![RuleSeverity::CRITICAL]),
32 )
33 .targets(vec!["@john.doe@email.com".to_string()])
34 .time_aggregation(86400)
35 .version(1),
36 valid_signal_notification_rule_data_id.clone(),
37 NotificationRulesType::NOTIFICATION_RULES,
38 ));
39 let configuration = datadog::Configuration::new();
40 let api = SecurityMonitoringAPI::with_config(configuration);
41 let resp = api
42 .patch_signal_notification_rule(valid_signal_notification_rule_data_id.clone(), body)
43 .await;
44 if let Ok(value) = resp {
45 println!("{:#?}", value);
46 } else {
47 println!("{:#?}", resp.unwrap_err());
48 }
49}
examples/v2_security-monitoring_PatchVulnerabilityNotificationRule.rs (line 26)
15async fn main() {
16 // there is a valid "valid_vulnerability_notification_rule" in the system
17 let valid_vulnerability_notification_rule_data_id =
18 std::env::var("VALID_VULNERABILITY_NOTIFICATION_RULE_DATA_ID").unwrap();
19 let body =
20 PatchNotificationRuleParameters::new().data(PatchNotificationRuleParametersData::new(
21 PatchNotificationRuleParametersDataAttributes::new()
22 .enabled(true)
23 .name("Rule 1".to_string())
24 .selectors(
25 Selectors::new(TriggerSource::SECURITY_FINDINGS)
26 .query("(source:production_service OR env:prod)".to_string())
27 .rule_types(vec![
28 RuleTypesItems::MISCONFIGURATION,
29 RuleTypesItems::ATTACK_PATH,
30 ])
31 .severities(vec![RuleSeverity::CRITICAL]),
32 )
33 .targets(vec!["@john.doe@email.com".to_string()])
34 .time_aggregation(86400)
35 .version(1),
36 valid_vulnerability_notification_rule_data_id.clone(),
37 NotificationRulesType::NOTIFICATION_RULES,
38 ));
39 let configuration = datadog::Configuration::new();
40 let api = SecurityMonitoringAPI::with_config(configuration);
41 let resp = api
42 .patch_vulnerability_notification_rule(
43 valid_vulnerability_notification_rule_data_id.clone(),
44 body,
45 )
46 .await;
47 if let Ok(value) = resp {
48 println!("{:#?}", value);
49 } else {
50 println!("{:#?}", resp.unwrap_err());
51 }
52}
Sourcepub fn rule_types(self, value: Vec<RuleTypesItems>) -> Self
pub fn rule_types(self, value: Vec<RuleTypesItems>) -> Self
Examples found in repository?
examples/v2_security-monitoring_CreateSignalNotificationRule.rs (lines 22-25)
15async fn main() {
16 let body =
17 CreateNotificationRuleParameters::new().data(CreateNotificationRuleParametersData::new(
18 CreateNotificationRuleParametersDataAttributes::new(
19 "Rule 1".to_string(),
20 Selectors::new(TriggerSource::SECURITY_FINDINGS)
21 .query("(source:production_service OR env:prod)".to_string())
22 .rule_types(vec![
23 RuleTypesItems::MISCONFIGURATION,
24 RuleTypesItems::ATTACK_PATH,
25 ])
26 .severities(vec![RuleSeverity::CRITICAL]),
27 vec!["@john.doe@email.com".to_string()],
28 )
29 .enabled(true)
30 .time_aggregation(86400),
31 NotificationRulesType::NOTIFICATION_RULES,
32 ));
33 let configuration = datadog::Configuration::new();
34 let api = SecurityMonitoringAPI::with_config(configuration);
35 let resp = api.create_signal_notification_rule(body).await;
36 if let Ok(value) = resp {
37 println!("{:#?}", value);
38 } else {
39 println!("{:#?}", resp.unwrap_err());
40 }
41}
More examples
examples/v2_security-monitoring_CreateVulnerabilityNotificationRule.rs (lines 22-25)
15async fn main() {
16 let body =
17 CreateNotificationRuleParameters::new().data(CreateNotificationRuleParametersData::new(
18 CreateNotificationRuleParametersDataAttributes::new(
19 "Rule 1".to_string(),
20 Selectors::new(TriggerSource::SECURITY_FINDINGS)
21 .query("(source:production_service OR env:prod)".to_string())
22 .rule_types(vec![
23 RuleTypesItems::MISCONFIGURATION,
24 RuleTypesItems::ATTACK_PATH,
25 ])
26 .severities(vec![RuleSeverity::CRITICAL]),
27 vec!["@john.doe@email.com".to_string()],
28 )
29 .enabled(true)
30 .time_aggregation(86400),
31 NotificationRulesType::NOTIFICATION_RULES,
32 ));
33 let configuration = datadog::Configuration::new();
34 let api = SecurityMonitoringAPI::with_config(configuration);
35 let resp = api.create_vulnerability_notification_rule(body).await;
36 if let Ok(value) = resp {
37 println!("{:#?}", value);
38 } else {
39 println!("{:#?}", resp.unwrap_err());
40 }
41}
examples/v2_security-monitoring_PatchSignalNotificationRule.rs (lines 27-30)
15async fn main() {
16 // there is a valid "valid_signal_notification_rule" in the system
17 let valid_signal_notification_rule_data_id =
18 std::env::var("VALID_SIGNAL_NOTIFICATION_RULE_DATA_ID").unwrap();
19 let body =
20 PatchNotificationRuleParameters::new().data(PatchNotificationRuleParametersData::new(
21 PatchNotificationRuleParametersDataAttributes::new()
22 .enabled(true)
23 .name("Rule 1".to_string())
24 .selectors(
25 Selectors::new(TriggerSource::SECURITY_FINDINGS)
26 .query("(source:production_service OR env:prod)".to_string())
27 .rule_types(vec![
28 RuleTypesItems::MISCONFIGURATION,
29 RuleTypesItems::ATTACK_PATH,
30 ])
31 .severities(vec![RuleSeverity::CRITICAL]),
32 )
33 .targets(vec!["@john.doe@email.com".to_string()])
34 .time_aggregation(86400)
35 .version(1),
36 valid_signal_notification_rule_data_id.clone(),
37 NotificationRulesType::NOTIFICATION_RULES,
38 ));
39 let configuration = datadog::Configuration::new();
40 let api = SecurityMonitoringAPI::with_config(configuration);
41 let resp = api
42 .patch_signal_notification_rule(valid_signal_notification_rule_data_id.clone(), body)
43 .await;
44 if let Ok(value) = resp {
45 println!("{:#?}", value);
46 } else {
47 println!("{:#?}", resp.unwrap_err());
48 }
49}
examples/v2_security-monitoring_PatchVulnerabilityNotificationRule.rs (lines 27-30)
15async fn main() {
16 // there is a valid "valid_vulnerability_notification_rule" in the system
17 let valid_vulnerability_notification_rule_data_id =
18 std::env::var("VALID_VULNERABILITY_NOTIFICATION_RULE_DATA_ID").unwrap();
19 let body =
20 PatchNotificationRuleParameters::new().data(PatchNotificationRuleParametersData::new(
21 PatchNotificationRuleParametersDataAttributes::new()
22 .enabled(true)
23 .name("Rule 1".to_string())
24 .selectors(
25 Selectors::new(TriggerSource::SECURITY_FINDINGS)
26 .query("(source:production_service OR env:prod)".to_string())
27 .rule_types(vec![
28 RuleTypesItems::MISCONFIGURATION,
29 RuleTypesItems::ATTACK_PATH,
30 ])
31 .severities(vec![RuleSeverity::CRITICAL]),
32 )
33 .targets(vec!["@john.doe@email.com".to_string()])
34 .time_aggregation(86400)
35 .version(1),
36 valid_vulnerability_notification_rule_data_id.clone(),
37 NotificationRulesType::NOTIFICATION_RULES,
38 ));
39 let configuration = datadog::Configuration::new();
40 let api = SecurityMonitoringAPI::with_config(configuration);
41 let resp = api
42 .patch_vulnerability_notification_rule(
43 valid_vulnerability_notification_rule_data_id.clone(),
44 body,
45 )
46 .await;
47 if let Ok(value) = resp {
48 println!("{:#?}", value);
49 } else {
50 println!("{:#?}", resp.unwrap_err());
51 }
52}
Sourcepub fn severities(self, value: Vec<RuleSeverity>) -> Self
pub fn severities(self, value: Vec<RuleSeverity>) -> Self
Examples found in repository?
examples/v2_security-monitoring_CreateSignalNotificationRule.rs (line 26)
15async fn main() {
16 let body =
17 CreateNotificationRuleParameters::new().data(CreateNotificationRuleParametersData::new(
18 CreateNotificationRuleParametersDataAttributes::new(
19 "Rule 1".to_string(),
20 Selectors::new(TriggerSource::SECURITY_FINDINGS)
21 .query("(source:production_service OR env:prod)".to_string())
22 .rule_types(vec![
23 RuleTypesItems::MISCONFIGURATION,
24 RuleTypesItems::ATTACK_PATH,
25 ])
26 .severities(vec![RuleSeverity::CRITICAL]),
27 vec!["@john.doe@email.com".to_string()],
28 )
29 .enabled(true)
30 .time_aggregation(86400),
31 NotificationRulesType::NOTIFICATION_RULES,
32 ));
33 let configuration = datadog::Configuration::new();
34 let api = SecurityMonitoringAPI::with_config(configuration);
35 let resp = api.create_signal_notification_rule(body).await;
36 if let Ok(value) = resp {
37 println!("{:#?}", value);
38 } else {
39 println!("{:#?}", resp.unwrap_err());
40 }
41}
More examples
examples/v2_security-monitoring_CreateVulnerabilityNotificationRule.rs (line 26)
15async fn main() {
16 let body =
17 CreateNotificationRuleParameters::new().data(CreateNotificationRuleParametersData::new(
18 CreateNotificationRuleParametersDataAttributes::new(
19 "Rule 1".to_string(),
20 Selectors::new(TriggerSource::SECURITY_FINDINGS)
21 .query("(source:production_service OR env:prod)".to_string())
22 .rule_types(vec![
23 RuleTypesItems::MISCONFIGURATION,
24 RuleTypesItems::ATTACK_PATH,
25 ])
26 .severities(vec![RuleSeverity::CRITICAL]),
27 vec!["@john.doe@email.com".to_string()],
28 )
29 .enabled(true)
30 .time_aggregation(86400),
31 NotificationRulesType::NOTIFICATION_RULES,
32 ));
33 let configuration = datadog::Configuration::new();
34 let api = SecurityMonitoringAPI::with_config(configuration);
35 let resp = api.create_vulnerability_notification_rule(body).await;
36 if let Ok(value) = resp {
37 println!("{:#?}", value);
38 } else {
39 println!("{:#?}", resp.unwrap_err());
40 }
41}
examples/v2_security-monitoring_PatchSignalNotificationRule.rs (line 31)
15async fn main() {
16 // there is a valid "valid_signal_notification_rule" in the system
17 let valid_signal_notification_rule_data_id =
18 std::env::var("VALID_SIGNAL_NOTIFICATION_RULE_DATA_ID").unwrap();
19 let body =
20 PatchNotificationRuleParameters::new().data(PatchNotificationRuleParametersData::new(
21 PatchNotificationRuleParametersDataAttributes::new()
22 .enabled(true)
23 .name("Rule 1".to_string())
24 .selectors(
25 Selectors::new(TriggerSource::SECURITY_FINDINGS)
26 .query("(source:production_service OR env:prod)".to_string())
27 .rule_types(vec![
28 RuleTypesItems::MISCONFIGURATION,
29 RuleTypesItems::ATTACK_PATH,
30 ])
31 .severities(vec![RuleSeverity::CRITICAL]),
32 )
33 .targets(vec!["@john.doe@email.com".to_string()])
34 .time_aggregation(86400)
35 .version(1),
36 valid_signal_notification_rule_data_id.clone(),
37 NotificationRulesType::NOTIFICATION_RULES,
38 ));
39 let configuration = datadog::Configuration::new();
40 let api = SecurityMonitoringAPI::with_config(configuration);
41 let resp = api
42 .patch_signal_notification_rule(valid_signal_notification_rule_data_id.clone(), body)
43 .await;
44 if let Ok(value) = resp {
45 println!("{:#?}", value);
46 } else {
47 println!("{:#?}", resp.unwrap_err());
48 }
49}
examples/v2_security-monitoring_PatchVulnerabilityNotificationRule.rs (line 31)
15async fn main() {
16 // there is a valid "valid_vulnerability_notification_rule" in the system
17 let valid_vulnerability_notification_rule_data_id =
18 std::env::var("VALID_VULNERABILITY_NOTIFICATION_RULE_DATA_ID").unwrap();
19 let body =
20 PatchNotificationRuleParameters::new().data(PatchNotificationRuleParametersData::new(
21 PatchNotificationRuleParametersDataAttributes::new()
22 .enabled(true)
23 .name("Rule 1".to_string())
24 .selectors(
25 Selectors::new(TriggerSource::SECURITY_FINDINGS)
26 .query("(source:production_service OR env:prod)".to_string())
27 .rule_types(vec![
28 RuleTypesItems::MISCONFIGURATION,
29 RuleTypesItems::ATTACK_PATH,
30 ])
31 .severities(vec![RuleSeverity::CRITICAL]),
32 )
33 .targets(vec!["@john.doe@email.com".to_string()])
34 .time_aggregation(86400)
35 .version(1),
36 valid_vulnerability_notification_rule_data_id.clone(),
37 NotificationRulesType::NOTIFICATION_RULES,
38 ));
39 let configuration = datadog::Configuration::new();
40 let api = SecurityMonitoringAPI::with_config(configuration);
41 let resp = api
42 .patch_vulnerability_notification_rule(
43 valid_vulnerability_notification_rule_data_id.clone(),
44 body,
45 )
46 .await;
47 if let Ok(value) = resp {
48 println!("{:#?}", value);
49 } else {
50 println!("{:#?}", resp.unwrap_err());
51 }
52}
pub fn additional_properties(self, value: BTreeMap<String, Value>) -> Self
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Selectors
impl<'de> Deserialize<'de> for Selectors
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl StructuralPartialEq for Selectors
Auto Trait Implementations§
impl Freeze for Selectors
impl RefUnwindSafe for Selectors
impl Send for Selectors
impl Sync for Selectors
impl Unpin for Selectors
impl UnwindSafe for Selectors
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more