cargo-container 0.0.0

package rlibs in several containing frontends
pub fn to_string_single_line(value: &toml::Value) -> String {
    let mut s = String::new();
    append_ssl(&mut s, value);
    s
}

fn append_ssl(o: &mut String, value: &toml::Value) {
    match value {
        toml::Value::Array(a) => {
            let mut items = a.iter();
            match items.next() {
                None => { o.push_str("[]"); return },
                Some(first) => {
                    o.push_str("[ ");
                    append_ssl(o, first);
                }
            }
            for item in items {
                o.push_str(", ");
                append_ssl(o, item);
            }
            o.push_str(" ]");
        },
        toml::Value::Table(t) => {
            let mut items = t.iter();
            match items.next() {
                None => { o.push_str("[]"); return },
                Some((k,v)) => {
                    o.push_str("{ ");
                    o.push_str(&toml::to_string(k).unwrap());
                    o.push_str(" = ");
                    append_ssl(o, v);
                }
            }
            for (k, v) in items {
                o.push_str(", ");
                o.push_str(&toml::to_string(k).unwrap());
                o.push_str(" = ");
                append_ssl(o, v);
            }
            o.push_str(" }");
        },
        other => o.push_str(&toml::to_string(other).unwrap()),
    }
}