< 返回版块

/ 发表于 2025-01-14 00:00

Tags:crate, version, conflict,同名包定义冲突

问题:同一个名字的crate可能因为不同的crate的添加,导致有多个版本,导致类型定义也被判定为多个,然后报错。目前通过手工调整新引入的crate版本来处理冲突,很麻烦,所以:rust可以像python一样,一个同名的包就用一个版本吗,或者它已经有的包就不能共用吗?那个cargo home下的crates一堆同名的不同版本的,感觉就很冗余(crate是通过cargo add 添加的,需要手工重新调整版本,以便解决报错)

error[E0308]: mismatched types
   --> src/main.rs:649:28
    |
649 |     writer.write_dataframe(&df1);
    |            --------------- ^^^^ expected `polars_core::frame::DataFrame`, found `DataFrame`
    |            |
    |            arguments to this method are incorrect
    |
    = note: `DataFrame` and `polars_core::frame::DataFrame` have similar names, but are actually distinct types
note: `DataFrame` is defined in crate `polars_core`
   --> D:\Programs\CargoHome\registry\src\index.crates.io-6f17d22bba15001f\polars-core-0.43.1\src\frame\mod.rs:170:1
    |
170 | pub struct DataFrame {
    | ^^^^^^^^^^^^^^^^^^^^
note: `polars_core::frame::DataFrame` is defined in crate `polars_core`
   --> D:\Programs\CargoHome\registry\src\index.crates.io-6f17d22bba15001f\polars-core-0.44.2\src\frame\mod.rs:175:1
    |
175 | pub struct DataFrame {
    | ^^^^^^^^^^^^^^^^^^^^
    = note: perhaps two different versions of crate `polars_core` are being used?
note: method defined here 
   --> D:\Programs\CargoHome\registry\src\index.crates.io-6f17d22bba15001f\polars_excel_writer-0.10.0\src\xlsx_writer.rs:264:12
  • 这个报错把上面那个polars_excel_writer-0.10.0版本换成0.9就没有了,但这种很麻烦,要是引入的包很多,一个一个地手工调整引入的crate版本?

评论区

写评论
xsxz01 2025-01-15 10:25

前面带个域指定一下不行吗?

JackySu 2025-01-14 23:23

人家python求之不得的,在rust这实现了反而被你弃如敝屣,呃呃呃呃呃呃呃呃呃呃呃呃

Bai-Jinlin 2025-01-14 11:28

根据我的经验这种情况先运行下cargo update,不行改成最新版本,还不行就去对应库的issues下看看解决方法。

1 共 3 条评论, 1 页