Thread (22 messages) 22 messages, 3 authors, 2023-10-25

Re: [PATCH net-next v6 3/5] rust: add second `bindgen` pass for enum exhaustiveness checking

From: Benno Lossin <hidden>
Date: 2023-10-25 07:38:51
Also in: rust-for-linux

On 25.10.23 03:33, FUJITA Tomonori wrote:
On Tue, 24 Oct 2023 16:29:16 +0000
Benno Lossin [off-list ref] wrote:
quoted
On 24.10.23 02:58, FUJITA Tomonori wrote:
quoted
From: Miguel Ojeda <ojeda@kernel.org>
I think this commit message should also explain what it is
doing and not only the error below.
Looks ok?

This patch makes sure that the C's enum phy_state is sync with Rust
sides. If not, compiling fails. Note that this is a temporary
solution. It will be replaced with bindgen when it supports generating
the enum conversion code.
The solution that is implemented does not only work for `phy_state`, but
also other enums (you still have to manually add them). Also it would be
good to say that the error below is the error that one will receive when
the enum is out of sync/not all C variants are in Rust.

-- 
Cheers,
Benno
     error[E0005]: refutable pattern in function argument
          --> rust/bindings/bindings_enum_check.rs:29:6
           |
     29    |       (phy_state::PHY_DOWN
           |  ______^
     30    | |     | phy_state::PHY_READY
     31    | |     | phy_state::PHY_HALTED
     32    | |     | phy_state::PHY_ERROR
     ...     |
     35    | |     | phy_state::PHY_NOLINK
     36    | |     | phy_state::PHY_CABLETEST): phy_state,
           | |______________________________^ pattern `phy_state::PHY_NEW` not covered
           |
     note: `phy_state` defined here
          --> rust/bindings/bindings_generated_enum_check.rs:60739:10
           |
     60739 | pub enum phy_state {
           |          ^^^^^^^^^
     ...
     60745 |     PHY_NEW = 5,
           |     ------- not covered
           = note: the matched value is of type `phy_state`
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help