1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
use std::fmt::Display; pub struct Sort<'a> { columns: &'a [&'a str], desc: bool, } impl<'a> Sort<'a> { pub fn new(columns: &'a [&'a str], desc: bool) -> Self { Self { columns, desc } } } impl<'a> Display for Sort<'a> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { let columns = if self.columns.is_empty() { String::new() } else { let escaped: Vec<String> = self.columns.iter().map(|c| format!("\"{}\"", c)).collect(); format!("columns: [{}]", escaped.join(", ")) }; let desc = if self.desc { "desc: true" } else { "desc: false" }; write!(f, "sort({}, {})", columns, desc) } }