| 98 | } |
| 99 | |
| 100 | pub fn load_graph(&self, project_id: &str) -> io::Result<Option<PetCodeGraph>> { |
| 101 | match self.storage_mode { |
| 102 | StorageMode::Json => self.load_graph_json(project_id), |
| 103 | StorageMode::Binary => self.load_graph_binary(project_id), |
| 104 | StorageMode::Both => { |
| 105 | // 优先尝试加载二进制格式(更快),如果失败则加载JSON格式 |
| 106 | match self.load_graph_binary(project_id) { |
| 107 | Ok(graph) => Ok(graph), |
| 108 | Err(_) => self.load_graph_json(project_id), |
| 109 | } |
| 110 | }, |
| 111 | } |
| 112 | } |
| 113 | |
| 114 | fn load_graph_json(&self, project_id: &str) -> io::Result<Option<PetCodeGraph>> { |
| 115 | let graph_file = self.project_dir(project_id).join("graph.json"); |