Advertisement
Guest User

Untitled

a guest
May 20th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. trait Escaper {
  2. type FieldType;
  3. fn escape(&self, field: &Self::FieldType) -> String;
  4. }
  5.  
  6. struct StringEscaper;
  7. impl Escaper for StringEscaper {
  8. type FieldType = String;
  9. fn escape(&self, field: &Self::FieldType) -> String {
  10. format!("\"{}\"", field.replace('\\', r"\\").replace('"', r#"\""#).replace('\n', r"\\n"))
  11. }
  12. }
  13.  
  14. struct IntEscaper;
  15. impl Escaper for IntEscaper {
  16. type FieldType = i64;
  17. fn escape(&self, field: &Self::FieldType) -> String {
  18. field.to_string()
  19. }
  20. }
  21.  
  22. fn escape_field<T: Escaper>(escaper: T, name: &str, field_value: &T::FieldType) {
  23. println!("let {} = {};", name, escaper.escape(field_value));
  24. }
  25.  
  26. fn main() {
  27. escape_field(StringEscaper, "string", &r#"Hello" \world"#.to_string());
  28. escape_field(IntEscaper, "integer", &1234);
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement