Morning all!

Okay, let me start out by saying that I know absolutely sweet F.A. about Rust. There’s simply something I’m trying to get working and it’s required me to make a few changes. And with every change, it’s getting closer to building successfully… or so I hope.

Anyway, I’m here to bother you for a reason, not just to waffle. I was wondering if someone could be kind enough to explain this rust toolchain malarkey?

When I started trying to “fix” this thing (it’s a dockerfile), I updated it to build from the latest and greatest rust and then updated to the latest and… I digress, point being it’s failing some cargo stuff and I have reason to believe it’s because of the rust toolchain which is set as nightly-2022-07-19 now, I thought I could just set that to stable, but upon reading some docs, I need to set the date. I was just wondering if someone could explain why? Why can’t I just have the toolchain set to latest? It seems complicated for nothing.

  • BB_C@programming.dev
    link
    fedilink
    arrow-up
    6
    ·
    5 months ago

    You could have just mentioned the project in question since its code is public.

    https://git.joinplu.me/plume/plume

    % git grep '#!\[feature'
    plume-common/src/lib.rs:#![feature(associated_type_defaults)]
    plume-front/src/lib.rs:#![feature(decl_macro, proc_macro_hygiene)]
    plume-models/src/lib.rs:#![feature(never_type)]
    plume-models/src/lib.rs:#![feature(proc_macro_hygiene)]
    plume-models/src/lib.rs:#![feature(box_patterns)]
    src/main.rs:#![feature(decl_macro, proc_macro_hygiene)]
    
    % cat rust-toolchain
    nightly-2022-07-19
    
    % rm -f rust-toolchain
    % cargo check
    

    No errors from plume crates, but we get errors in a couple of locked dependencies:

    error[E0422]: cannot find struct, variant or union type `LineColumn` in crate `proc_macro`
       --> /home/user64/.cargo/registry/src/index.crates.io-6f17d22bba15001f/proc-macro2-1.0.49/src/wrapper.rs:479:33
        |
    479 |                 let proc_macro::LineColumn { line, column } = s.start();
        |                                 ^^^^^^^^^^ not found in `proc_macro`
        |
    help: consider importing one of these items
        |
    1   + use crate::LineColumn;
        |
    1   + use crate::fallback::LineColumn;
        |
    help: if you import `LineColumn`, refer to it directly
        |
    479 -                 let proc_macro::LineColumn { line, column } = s.start();
    479 +                 let LineColumn { line, column } = s.start();
        |
    
       Compiling generic-array v0.14.6
    error[E0422]: cannot find struct, variant or union type `LineColumn` in crate `proc_macro`
       --> /home/user64/.cargo/registry/src/index.crates.io-6f17d22bba15001f/proc-macro2-1.0.49/src/wrapper.rs:496:33
        |
    496 |                 let proc_macro::LineColumn { line, column } = s.end();
        |                                 ^^^^^^^^^^ not found in `proc_macro`
        |
    help: consider importing one of these items
        |
    1   + use crate::LineColumn;
        |
    1   + use crate::fallback::LineColumn;
        |
    help: if you import `LineColumn`, refer to it directly
        |
    496 -                 let proc_macro::LineColumn { line, column } = s.end();
    496 +                 let LineColumn { line, column } = s.end();
        |
    
        Checking once_cell v1.17.0
    error[E0635]: unknown feature `proc_macro_span_shrink`
      --> /home/user64/.cargo/registry/src/index.crates.io-6f17d22bba15001f/proc-macro2-1.0.49/src/lib.rs:92:30
       |
    92 |     feature(proc_macro_span, proc_macro_span_shrink)
       |                              ^^^^^^^^^^^^^^^^^^^^^^
    
    

    Let’s see if a full (semver-compatible) deps update works:

    % cargo update
    % cargo check
    

    This succeeds.

    I will let you pick it from here.
    Should be a good learning experience.