derive_cache.rs 818 B

123456789101112131415161718192021222324252627282930313233
  1. use crate::util::get_tera;
  2. use tera::{Context, Tera};
  3. pub struct ProtobufDeriveCache {
  4. context: Context,
  5. structs: Vec<String>,
  6. enums: Vec<String>,
  7. }
  8. #[allow(dead_code)]
  9. impl ProtobufDeriveCache {
  10. pub fn new(structs: Vec<String>, enums: Vec<String>) -> Self {
  11. return ProtobufDeriveCache {
  12. context: Context::new(),
  13. structs,
  14. enums,
  15. };
  16. }
  17. pub fn render(&mut self) -> Option<String> {
  18. self.context.insert("names", &self.structs);
  19. self.context.insert("enums", &self.enums);
  20. let tera = get_tera("build_cache");
  21. match tera.render("derive_cache.tera", &self.context) {
  22. Ok(r) => Some(r),
  23. Err(e) => {
  24. log::error!("{:?}", e);
  25. None
  26. }
  27. }
  28. }
  29. }