crate::ix!();
#[async_trait]
impl<P,H:CrateHandleInterface<P>> DetectCircularDependencies for Workspace<P,H>
where for<'async_trait> P: From<PathBuf> + AsRef<Path> + Send + Sync + 'async_trait
{
type Error = WorkspaceError;
async fn detect_circular_dependencies(&self) -> Result<(), WorkspaceError> {
match self.get_cargo_metadata().await {
Ok(_) => Ok(()),
Err(WorkspaceError::CargoMetadataError(CargoMetadataError::MetadataError { error: ref e }))
if e.to_string().contains("cyclic package dependency") =>
{
Err(WorkspaceError::CargoMetadataError(CargoMetadataError::CyclicPackageDependency))
}
Err(e) => Err(e),
}
}
}