diff options
| author | Phil Schaf | 2015-11-14 22:18:42 +0100 |
|---|---|---|
| committer | Phil Schaf | 2015-11-14 22:18:42 +0100 |
| commit | d3c3b98b43713a66111994c81bbf5c12776ad39f (patch) | |
| tree | eac418164c744726c3b9aa70901626e1e1439ee8 /src/document_tree | |
| parent | 7638986b092e4276ecf25e49633618c5f5a9c4af (diff) | |
| download | rust-rst-d3c3b98b43713a66111994c81bbf5c12776ad39f.tar.bz2 | |
added mutable interfaces
Diffstat (limited to 'src/document_tree')
| -rw-r--r-- | src/document_tree/elements.rs | 35 | ||||
| -rw-r--r-- | src/document_tree/extra_attributes.rs | 3 |
2 files changed, 24 insertions, 14 deletions
diff --git a/src/document_tree/elements.rs b/src/document_tree/elements.rs index 2cfd3d4..f1a9b43 100644 --- a/src/document_tree/elements.rs +++ b/src/document_tree/elements.rs @@ -9,19 +9,23 @@ use super::element_categories::*; //-----------------\\ pub trait Element { - fn ids(&self) -> &Vec<String>; - fn names(&self) -> &Vec<String>; - fn source(&self) -> &Option<Url>; - fn classes(&self) -> &Vec<String>; + fn ids (& self) -> & Vec<String>; + fn ids_mut(&mut self) -> &mut Vec<String>; + fn names (& self) -> & Vec<String>; + fn names_mut(&mut self) -> &mut Vec<String>; + fn source (& self) -> & Option<Url>; + fn source_mut(&mut self) -> &mut Option<Url>; + fn classes (& self) -> & Vec<String>; + fn classes_mut(&mut self) -> &mut Vec<String>; } #[derive(Default,Debug)] pub struct CommonAttributes { - ids: Vec<String>, - names: Vec<String>, - //left out dupnames - source: Option<Url>, + ids: Vec<String>, + names: Vec<String>, + source: Option<Url>, classes: Vec<String>, + //left out dupnames } //----\\ @@ -30,10 +34,14 @@ pub struct CommonAttributes { macro_rules! impl_element(($name:ident) => { impl Element for $name { - fn ids(&self) -> &Vec<String> { &self.common.ids } - fn names(&self) -> &Vec<String> { &self.common.names } - fn source(&self) -> &Option<Url> { &self.common.source } - fn classes(&self) -> &Vec<String> { &self.common.classes } + fn ids (& self) -> & Vec<String> { & self.common.ids } + fn ids_mut(&mut self) -> &mut Vec<String> { &mut self.common.ids } + fn names (& self) -> & Vec<String> { & self.common.names } + fn names_mut(&mut self) -> &mut Vec<String> { &mut self.common.names } + fn source (& self) -> & Option<Url> { & self.common.source } + fn source_mut(&mut self) -> &mut Option<Url> { &mut self.common.source } + fn classes (& self) -> & Vec<String> { & self.common.classes } + fn classes_mut(&mut self) -> &mut Vec<String> { &mut self.common.classes } } }); @@ -46,7 +54,8 @@ macro_rules! impl_children(($name:ident, $childtype:ident) => { macro_rules! impl_extra(($name:ident) => { impl ExtraAttributes<extra_attributes::$name> for $name { - fn extra(&self) -> &extra_attributes::$name { &self.extra } + fn extra (& self) -> & extra_attributes::$name { & self.extra } + fn extra_mut(&mut self) -> &mut extra_attributes::$name { &mut self.extra } } }); diff --git a/src/document_tree/extra_attributes.rs b/src/document_tree/extra_attributes.rs index 2141469..16e261f 100644 --- a/src/document_tree/extra_attributes.rs +++ b/src/document_tree/extra_attributes.rs @@ -3,7 +3,8 @@ use url::Url; use super::attribute_types::{FixedSpace,ID,NameToken,AlignHV,AlignH,Measure,EnumeratedListType}; pub trait ExtraAttributes<A> { - fn extra(&self) -> &A; + fn extra (& self) -> & A; + fn extra_mut(&mut self) -> &mut A; } #[derive(Default,Debug)] pub struct Address { pub space: FixedSpace } |
