]> saetta.ns0.it Git - rust/zakform/commitdiff
Form::get_field now return a mutable Box.
authorAndrea Zagli <azagli@libero.it>
Sat, 11 Feb 2023 16:28:00 +0000 (17:28 +0100)
committerAndrea Zagli <azagli@libero.it>
Sat, 11 Feb 2023 16:28:00 +0000 (17:28 +0100)
examples/form.rs
src/fields.rs
src/form.rs

index 3943ef76d3dd5927ef0123620f27fe447633c773..1a80c47b4cd3dc24f85f2d6e29ebb3814caf9866 100644 (file)
@@ -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::<zakform::fields::FieldRadio>().unwrap();
+       let mut single = f.get_field("radio").unwrap().any().downcast_mut::<zakform::fields::FieldRadio>().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::<zakform::fields::FieldRadio>().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#"<button type="submit">Send</button>"#);
 
index 0bcfe52cf9fad24d272043db69c342c2708668cd..4331c80a381fd9d92568418b75584b93e8a64e3c 100644 (file)
@@ -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
        }
 }
index 89760dd850e7039ef367d4f80e3aecde84d20662..b49d3ab483473f2d8b1a3e2816dab99330769912 100644 (file)
@@ -17,8 +17,8 @@ impl Form {
                &self.fields
        }
 
-       pub fn get_field(&self, field_name: &str) -> Result<&Box<dyn super::fields::TField>, ()> {
-               for f in &self.fields {
+       pub fn get_field(&mut self, field_name: &str) -> Result<&mut Box<dyn super::fields::TField>, ()> {
+               for f in &mut self.fields {
                        if f.get_name().as_str() == field_name {
                                return Ok(f);
                        }