Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- trait Escaper {
- type FieldType;
- fn escape(&self, field: &Self::FieldType) -> String;
- }
- struct StringEscaper;
- impl Escaper for StringEscaper {
- type FieldType = String;
- fn escape(&self, field: &Self::FieldType) -> String {
- format!("\"{}\"", field.replace('\\', r"\\").replace('"', r#"\""#).replace('\n', r"\\n"))
- }
- }
- struct IntEscaper;
- impl Escaper for IntEscaper {
- type FieldType = i64;
- fn escape(&self, field: &Self::FieldType) -> String {
- field.to_string()
- }
- }
- fn escape_field<T: Escaper>(escaper: T, name: &str, field_value: &T::FieldType) {
- println!("let {} = {};", name, escaper.escape(field_value));
- }
- fn main() {
- escape_field(StringEscaper, "string", &r#"Hello" \world"#.to_string());
- escape_field(IntEscaper, "integer", &1234);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement