Rust for Linux List
 help / color / mirror / Atom feed
* From<bool> and Bounded's invariant for signed N = 1
@ 2026-08-13  9:46 Younes Akhouayri
  2026-08-13 10:16 ` Miguel Ojeda
  2026-08-13 13:04 ` Alexandre Courbot
  0 siblings, 2 replies; 3+ messages in thread
From: Younes Akhouayri @ 2026-08-13  9:46 UTC (permalink / raw)
  To: Rust For Linux; +Cc: Acourbot, Yury Norov, Ojeda, Yu Whisper Personal, Git

Hi,

There seems to be an invariant violation in the generic From<bool>
implementation for Bounded.

As I understand it, Bounded<i8, 1> can represent only -1 and 0, while
i8::from(true) produces 1. However, this safe code is accepted:

let value: Bounded<i8, 1> = true.into();
let _raw: i8 = *value;

Bounded::<i8, 1>::try_new(1) rejects the same value, but From<bool>
passes it directly to the unsafe __new() constructor. The resulting
Bounded value violates the invariant relied upon by Deref, whose
failure branch calls unreachable_unchecked().

Am I missing an intended constraint on this conversion? If not, it
seems the signed N = 1 case needs to be excluded or handled
differently.

Any thoughts?

Thanks,
Younes

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-08-13 13:04 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-13  9:46 From<bool> and Bounded's invariant for signed N = 1 Younes Akhouayri
2026-08-13 10:16 ` Miguel Ojeda
2026-08-13 13:04 ` Alexandre Courbot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox