Sorted HashMap
TODO
[package]
name = "sorted-hashmap"
version = "0.1.0"
edition = "2021"
[dependencies]
liquid = "0.26"
use std::collections::HashMap;
fn main() {
let result = direct();
println!("{}", result);
let result = sort_by_key();
println!("{}", result);
}
fn direct() -> String {
render("direct: {% for pair in data %}{{pair[0]}}={{pair[1]}}; {% endfor %}")
}
fn sort_by_key() -> String {
render("sorted: {% assign sorted = data.keys %}{% for item in sorted %}{{item}} {% endfor %}")
}
fn render(tmpl: &str) -> String {
let template = liquid::ParserBuilder::with_stdlib()
.build()
.unwrap()
.parse(tmpl)
.unwrap();
let data = HashMap::from([("dog", 1), ("cat", 3), ("snake", 2)]);
let globals = liquid::object!({
"data": data,
});
template.render(&globals).unwrap()
}
#[test]
pub fn test_reverse() {
// Cannot test as the order is arbitrary and changes between runs
//let result = direct();
//assert_eq!(result, "direct: snake=2; dog=1; cat=3; ");
//let result = render("sorted: {% assign sorted = items | sort %}{% for item in sorted %}{{item}} {% endfor %}");
//assert_eq!(result, "sorted: 2 3 4 5 6 7 8 ");
}