`rustix::io::Errno` impl `core::error::Error` only with nightly

Aperta
#1,527 0 commenti 1 reazione 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
52/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
rust

Direzione di ricerca

Inizia riproducendo l'esempio no_std da main.rs con la dipendenza rustix in Cargo.toml, quindi esamina il controllo della funzionalità error_in_core in build.rs. Conferma il comportamento su Rust 1.81 o versioni successive e verifica che cargo build riconosca Errno come implementazione di core::error::Error senza richiedere nightly.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Support for error_in_core in no_std context was added in https://github.com/bytecodealliance/rustix/pull/1241 But it seems the use_feature_or_nothing("error_in_core"); check in build.rs requires nightly even with rust 1.81+.

❯ rustc --version
rustc 1.85.0 (4d91de4e4 2025-02-17)

Cargo.toml

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

[dependencies]
rustix = { version = "1.1.2", default-features = false }

main.rs

#![no_std]

use rustix::io::Errno;

use core::error::Error;

fn use_err<E: Error>(err: E) {}

fn main() {
    use_err(Errno::ACCESS);
}

cargo build

error[E0277]: the trait bound `Errno: core::error::Error` is not satisfied
  --> src/main.rs:10:13
   |
10 |     use_err(Errno::ACCESS);
   |     ------- ^^^^^^^^^^^^^ the trait `core::error::Error` is not implemented for `Errno`
   |     |
   |     required by a bound introduced by this call
   |
note: required by a bound in `use_err`
  --> src/main.rs:7:15
   |
7  | fn use_err<E: Error>(err: E) {}
   |               ^^^^^ required by this bound in `use_err`
Lingua principale
Rust
Stelle
2.1k
Fork
322
Merge medio
5g 16h
PR unite (30g)
9

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di bytecodealliance/rustix

Tutte le issue di bytecodealliance/rustix

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.