Error: Usage Requirements Cycle¶
A library can declare that it uses another library by using the using key
in its project/package manifest.
These using requirements must form a directed acyclic graph, meaning that
there can be no dependency cycle. For example, if library clover lists
library beehive in its uses list, then beehive cannot also list
clover—even transitively—else there would be a dependency cycle.
To fix this issue, you must remove the dependency cycle. Oftentimes, this can be
done by splitting one of the libraries into two. For example, beehive can
become pollinator + beehive with beehive uses pollinator and
clover uses pollinator.
Also, note that this issue also occurs when a library uses itself. You can resolve that issue by removing the self reference; libraries already implicitly have access to themselves.