| 1341 | type Err = InvalidEnvironmentIdError; |
| 1342 | |
| 1343 | fn from_str(s: &str) -> Result<EnvironmentId, InvalidEnvironmentIdError> { |
| 1344 | static MATCHER: LazyLock<Regex> = LazyLock::new(|| { |
| 1345 | Regex::new( |
| 1346 | "^(?P<cloud_provider>[[:alnum:]]+)-\ |
| 1347 | (?P<cloud_provider_region>[[:alnum:]\\-]+)-\ |
| 1348 | (?P<organization_id>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})-\ |
| 1349 | (?P<ordinal>\\d{1,8})$" |
| 1350 | ).unwrap() |
| 1351 | }); |
| 1352 | let captures = MATCHER.captures(s).ok_or(InvalidEnvironmentIdError)?; |
| 1353 | Ok(EnvironmentId { |
| 1354 | cloud_provider: CloudProvider::from_str(&captures["cloud_provider"])?, |
| 1355 | cloud_provider_region: captures["cloud_provider_region"].into(), |
| 1356 | organization_id: captures["organization_id"] |
| 1357 | .parse() |
| 1358 | .map_err(|_| InvalidEnvironmentIdError)?, |
| 1359 | ordinal: captures["ordinal"] |
| 1360 | .parse() |
| 1361 | .map_err(|_| InvalidEnvironmentIdError)?, |
| 1362 | }) |
| 1363 | } |
| 1364 | } |
| 1365 | |
| 1366 | /// The error type for [`EnvironmentId::from_str`]. |