diff options
| -rw-r--r-- | mullvad-types/src/access_method.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/mullvad-types/src/access_method.rs b/mullvad-types/src/access_method.rs index 342b8ffcaf..8ba50c91c3 100644 --- a/mullvad-types/src/access_method.rs +++ b/mullvad-types/src/access_method.rs @@ -93,6 +93,30 @@ impl Settings { Ok(updated) } + /// Update an existing builtin [`AccessMethodSetting`] chosen by + /// `predicate`, in a closure `f`, saving the result to `self`. + /// + /// Returns a bool to indicate whether some [`AccessMethodSetting`] was + /// updated. + pub fn update_builtin( + &mut self, + predicate: impl Fn(&AccessMethodSetting) -> bool, + f: impl FnOnce(&mut AccessMethodSetting), + ) -> bool { + let mut updated = false; + + if let Some(access_method) = self + .iter_mut() + .find(|setting| setting.is_builtin() && predicate(setting)) + { + f(access_method); + + updated = true; + } + + updated + } + /// Remove all custom access methods. pub fn clear_custom(&mut self) { self.custom.clear(); |
