termimad declares those imports in its bacon.toml: [package] edition = "2021" resolver = "1" [dependencies] coolor = { version="0.6", features=["crossterm"] } crossterm = "=0.23.2" coolor 0.6 imports crossterm with [dependencies] ansi_colours = "1.2.2" crossterm = { optional=true, version=">=0.23.2" } So it looks to me that termimad should use crossterm 0.23.2 Here's what cargo tree says: > cargo tree -i crossterm error: There are multiple `crossterm` packages in your project, and the specification `crossterm` is ambiguous. Please re-run this command with `-p ` where `` is one of the following: crossterm@0.23.2 crossterm@0.27.0 > cargo tree -i crossterm@0.23.2 crossterm v0.23.2 ├── crokey v0.4.3 │ [dev-dependencies] │ └── termimad v0.25.4 (/home/dys/dev/termimad) └── termimad v0.25.4 (/home/dys/dev/termimad) > cargo tree -i crossterm@0.27.0 crossterm v0.27.0 └── coolor v0.6.0 └── termimad v0.25.4 (/home/dys/dev/termimad) Why does the resolver fail to use crossterm 0.23.2 ? How can I fix the Cargo.toml files to ensure termimad uses crossterm 0.23.2 while allowing the users of coolor to use any version starting from 0.23.2 ?