From f7e079f5fb65c674b7d7348a205b95203f1f19df Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Sat, 11 Feb 2023 17:28:00 +0100 Subject: [PATCH] Form::get_field now return a mutable Box. --- examples/form.rs | 9 ++++----- src/fields.rs | 6 +++--- src/form.rs | 4 ++-- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/examples/form.rs b/examples/form.rs index 3943ef7..1a80c47 100644 --- a/examples/form.rs +++ b/examples/form.rs @@ -68,16 +68,15 @@ async fn index( s.push_str(fi.render().as_str()); } - let mut single = f.get_field("radio").unwrap().any().downcast_ref::().unwrap(); + let mut single = f.get_field("radio").unwrap().any().downcast_mut::().unwrap(); - /*single.add_option(zakform::fields::FOption{ value: String::from("X"), label: String::from("Unknown") }); + single.add_option(zakform::fields::FOption{ value: String::from("X"), label: String::from("Unknown") }); let single = f.get_field("radio").unwrap().any().downcast_ref::().unwrap(); - let ssingle = single.render_single(2);*/ - let ssingle = single.render_single(1); + s.push_str(&single.render_single(2)); - s.push_str(&ssingle); + s.push_str(&single.render_single(1)); s.push_str(r#""#); diff --git a/src/fields.rs b/src/fields.rs index 0bcfe52..4331c80 100644 --- a/src/fields.rs +++ b/src/fields.rs @@ -21,7 +21,7 @@ pub trait TField { fn render(&self) -> String; - fn any(&self) -> &dyn Any; + fn any(&mut self) -> &mut dyn Any; } #[derive(Default)] @@ -51,7 +51,7 @@ impl TField for FieldText { s } - fn any(&self) -> &dyn Any { + fn any(&mut self) -> &mut dyn Any { self } } @@ -109,7 +109,7 @@ impl TField for FieldRadio { s } - fn any(&self) -> &dyn Any { + fn any(&mut self) -> &mut dyn Any { self } } diff --git a/src/form.rs b/src/form.rs index 89760dd..b49d3ab 100644 --- a/src/form.rs +++ b/src/form.rs @@ -17,8 +17,8 @@ impl Form { &self.fields } - pub fn get_field(&self, field_name: &str) -> Result<&Box, ()> { - for f in &self.fields { + pub fn get_field(&mut self, field_name: &str) -> Result<&mut Box, ()> { + for f in &mut self.fields { if f.get_name().as_str() == field_name { return Ok(f); } -- 2.49.0