rhai icon indicating copy to clipboard operation
rhai copied to clipboard

Latest rhai crate 1.23.6 won't build

Open theo-abel opened this issue 2 months ago • 2 comments

Hi, trying to build rhai v1.23.6 fails with the following message :

$ cargo build
   Compiling rhai v1.23.6
error[E0369]: binary operation `==` cannot be applied to type `thin_vec::ThinVec<Stmt>`
   --> /home/abel/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rhai-1.23.6/src/ast/ast.rs:25:5
    |
 20 | #[derive(Clone, PartialEq)]
    |                 --------- in this derive macro expansion
...
 25 |     body: ThinVec<Stmt>,
    |     ^^^^^^^^^^^^^^^^^^^
    |
note: an implementation of `PartialEq` might be missing for `Stmt`
   --> /home/abel/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rhai-1.23.6/src/ast/stmt.rs:586:1
    |
586 | pub enum Stmt {
    | ^^^^^^^^^^^^^ must implement `PartialEq`
help: consider annotating `Stmt` with `#[derive(PartialEq)]`
   --> /home/abel/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rhai-1.23.6/src/ast/stmt.rs:586:1
    |
586 + #[derive(PartialEq)]
587 | pub enum Stmt {
    |

error[E0369]: binary operation `==` cannot be applied to type `Rc<module::Module>`
   --> /home/abel/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rhai-1.23.6/src/ast/ast.rs:28:5
    |
 20 | #[derive(Clone, PartialEq)]
    |                 --------- in this derive macro expansion
...
 28 |     lib: crate::SharedModule,
    |     ^^^^^^^^^^^^^^^^^^^^^^^^
    |
note: an implementation of `PartialEq` might be missing for `module::Module`
   --> /home/abel/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rhai-1.23.6/src/module/mod.rs:624:1
    |
624 | pub struct Module {
    | ^^^^^^^^^^^^^^^^^ must implement `PartialEq`
help: consider annotating `module::Module` with `#[derive(PartialEq)]`
   --> /home/abel/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rhai-1.23.6/src/module/mod.rs:624:1
    |
624 + #[derive(PartialEq)]
625 | pub struct Module {
    |

error[E0369]: binary operation `==` cannot be applied to type `Option<Rc<StaticModuleResolver>>`
  --> /home/abel/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rhai-1.23.6/src/ast/ast.rs:31:5
   |
20 | #[derive(Clone, PartialEq)]
   |                 --------- in this derive macro expansion
...
31 |     pub(crate) resolver: Option<crate::Shared<crate::module::resolvers::StaticModuleResolver>>,
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
note: an implementation of `PartialEq` might be missing for `StaticModuleResolver`
  --> /home/abel/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rhai-1.23.6/src/module/resolvers/stat.rs:31:1
   |
31 | pub struct StaticModuleResolver(BTreeMap<Identifier, SharedModule>);
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ must implement `PartialEq`
help: consider annotating `StaticModuleResolver` with `#[derive(PartialEq)]`
  --> /home/abel/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rhai-1.23.6/src/module/resolvers/stat.rs:31:1
   |
31 + #[derive(PartialEq)]
32 | pub struct StaticModuleResolver(BTreeMap<Identifier, SharedModule>);
   |

For more information about this error, try `rustc --explain E0369`.
error: could not compile `rhai` (lib) due to 3 previous errors

Reproducing

cargo.toml file :

[package]
name = "blabla"
version = "0.1.0"
edition = "2024"

[dependencies]
rhai = "1.23.6"

Rust Toolchain : nightly-x86_64-unknown-linux-gnu Compiler : rustc 1.93.0-nightly (adaa83897 2025-10-27)

theo-abel avatar Nov 10 '25 13:11 theo-abel

Note that building from upstream works.

Cargo.toml file :

[package]
name = "blabla"
version = "0.1.0"
edition = "2024"

[dependencies]
rhai = { git = "https://github.com/rhaiscript/rhai.git" }
$ cargo build
    Updating git repository `https://github.com/rhaiscript/rhai.git`
     Locking 2 packages to latest Rust 1.93.0-nightly compatible versions
      Adding rhai v1.23.6 (https://github.com/rhaiscript/rhai.git#6548c2b1)
      Adding rhai_codegen v3.1.0 (https://github.com/rhaiscript/rhai.git#6548c2b1)
   Compiling libc v0.2.177
   Compiling crunchy v0.2.4
   Compiling autocfg v1.5.0
   Compiling version_check v0.9.5
   Compiling tiny-keccak v2.0.2
   Compiling proc-macro2 v1.0.103
   Compiling cfg-if v1.0.4
   Compiling portable-atomic v1.11.1
   Compiling quote v1.0.42
   Compiling unicode-ident v1.0.22
   Compiling getrandom v0.3.4
   Compiling zerocopy v0.8.27
   Compiling once_cell v1.21.3
   Compiling smartstring v1.0.1
   Compiling num-traits v0.2.19
   Compiling ahash v0.8.12
   Compiling rhai v1.23.6 (https://github.com/rhaiscript/rhai.git#6548c2b1)
   Compiling static_assertions v1.1.0
   Compiling bitflags v2.10.0
   Compiling thin-vec v0.2.14
   Compiling smallvec v1.15.1
   Compiling syn v2.0.110
   Compiling getrandom v0.2.16
   Compiling const-random-macro v0.1.16
   Compiling const-random v0.1.18
   Compiling rhai_codegen v3.1.0 (https://github.com/rhaiscript/rhai.git#6548c2b1)
   Compiling blabla v0.1.0 (/home/abel/downloads/blabla)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 31.78s

theo-abel avatar Nov 10 '25 14:11 theo-abel

That is extremely strange as upstream is almost the same as the crate release...

https://github.com/rhaiscript/rhai/blob/main/src/ast/ast.rs#L20

And the source does not derive PartialEq on that line...

schungx avatar Nov 11 '25 00:11 schungx