From a806922d47bb7ea3e401a99ed2c918c4ab745973 Mon Sep 17 00:00:00 2001 From: pml68 Date: Mon, 24 Feb 2025 19:08:32 +0100 Subject: feat: create separate `ValueFromStr` struct --- src/options.rs | 30 +++++------------------------- 1 file changed, 5 insertions(+), 25 deletions(-) (limited to 'src/options.rs') diff --git a/src/options.rs b/src/options.rs index 9514dcb..5a3e1fb 100644 --- a/src/options.rs +++ b/src/options.rs @@ -1,41 +1,21 @@ use std::collections::BTreeMap; -use std::str::FromStr; use iced::Padding; +#[allow(unused_imports)] use iced::widget::{Button, Column, Container, Image, Row, Svg, Text}; +use crate::values::ValueFromStr; + pub trait ApplyOptions { fn apply_options(self, options: BTreeMap>) -> Self; } -impl<'a, Message> ApplyOptions for Button<'a, Message> { +impl ApplyOptions for Button<'_, Message> { fn apply_options(self, options: BTreeMap>) -> Self { let mut button = self; if let Some(padding) = options.get("padding").expect("padding key") { - let padding: Padding = padding - .strip_prefix('[') - .and_then(|s| s.strip_suffix(']')) - .and_then(|s| { - Some( - s.split(',') - .map(|n| f32::from_str(n).unwrap()) - .collect::>(), - ) - }) - .and_then(|s| { - if s.len() == 4 { - Some(Padding { - top: s[0], - right: s[1], - bottom: s[2], - left: s[3], - }) - } else { - None - } - }) - .unwrap(); + let padding: Padding = Padding::value_from_str(padding).unwrap(); button = button.padding(padding); } -- cgit v1.2.3