| 293 | } |
| 294 | |
| 295 | pub fn register<P: Provider + 'static>(&mut self, provider: P) { |
| 296 | let id = provider.id().to_string(); |
| 297 | let models = provider.models(); |
| 298 | let info = ProviderInfo { |
| 299 | id: id.clone(), |
| 300 | name: provider.name().to_string(), |
| 301 | models: models.into_iter().map(|m| (m.id.clone(), m)).collect(), |
| 302 | source: "bundled".to_string(), |
| 303 | options: HashMap::new(), |
| 304 | }; |
| 305 | self.provider_info.insert(id.clone(), info); |
| 306 | self.providers.insert(id, Arc::new(provider)); |
| 307 | } |
| 308 | |
| 309 | pub fn register_arc(&mut self, provider: Arc<dyn Provider>) { |
| 310 | let id = provider.id().to_string(); |