On Fri, Oct 14, 2022 at 11:57 AM Viresh Kumar <viresh.kumar@xxxxxxxxxx> wrote: > > On 14-10-22, 11:45, Bartosz Golaszewski wrote: > > Maybe also add chained mutators everywhere? To be able to do > > settings.set_direction().set_edge() etc.? > > Based on Kent's suggestion earlier, what I have implemented is > set_prop(), to which one can pass all settings and it will apply them > in a loop. > > pub fn set_prop(&mut self, values: &[SettingVal]) -> Result<()> { > for value in values { > match value { > SettingVal::Direction(val) => self.set_direction(*val)?, > SettingVal::EdgeDetection(val) => self.set_edge_detection(*val)?, > SettingVal::Bias(val) => self.set_bias(*val)?, > SettingVal::Drive(val) => self.set_drive(*val)?, > SettingVal::ActiveLow(val) => self.set_active_low(*val), > SettingVal::DebouncePeriod(val) => self.set_debounce_period(*val), > SettingVal::EventClock(val) => self.set_event_clock(*val)?, > SettingVal::OutputValue(val) => self.set_output_value(*val)?, > } > } > > Ok(()) > } > > I think that replaces the need of nested ones ? And if we want to add > those later, we can always come back and add them. But I am not sure > it would be required. > I cannot find Kent's comment on that - what was the reasoning behind this? > > And I would still love a thorough API review from someone who actually > > knows rust too. :( > > Well, Kent did a very good job earlier. I am not sure if he has extra > cycles to review this once again, though not a lot has changed since > last time. > Yeah sorry Kent, I forgot we're at v6 already and you did review the previous iterations. :) Bart > > But I will play some more with v7 so do send it. > > Great. > > -- > viresh