···2525/// ```rust
2626/// let _ = germ::ast::Ast::from_string(r#"=> gemini://gem.rest/ GemRest"#);
2727/// ```
2828+#[derive(Clone)]
2829pub struct Ast {
2930 inner: Vec<Node>,
3031}
3232+3133impl Ast {
3234 /// Build an AST tree from Gemtext.
3335 ///
+1-1
crates/germ/src/ast/node.rs
···2626/// - [Gemtext Documentation](https://gemini.circumlunar.space/docs/gemtext.gmi)
2727/// - [Gemtext Cheatsheet](https://gemini.circumlunar.space/docs/cheatsheet.gmi).
2828/// - [Gemini Specification](https://gemini.circumlunar.space/docs/specification.gmi).
2929-#[derive(Debug, PartialEq)]
2929+#[derive(Debug, PartialEq, Clone)]
3030pub enum Node {
3131 /// A text line
3232 ///
+1
crates/germ/src/convert.rs
···2727mod macros;
28282929/// Different targets to convert Gemtext to
3030+#[derive(Clone)]
3031pub enum Target {
3132 /// Convert Gemtext to HTML
3233 HTML,
+3-1
crates/germ/src/meta.rs
···20202121/// Structure-ize a Gemini response's meta section into it's mime type and it's
2222/// parameters.
2323-#[derive(Debug, Default)]
2323+#[derive(Debug, Default, Clone)]
2424pub struct Meta {
2525 /// The mime type of a Gemini response
2626 mime: String,
2727 /// The parameters of a Gemini response
2828 parameters: HashMap<String, String>,
2929}
3030+3031impl ToString for Meta {
3132 /// Convert a `Meta` into a `String`
3233 ///
···5859 })
5960 }
6061}
6262+6163impl Meta {
6264 /// Create a new `Meta`
6365 ///