I like this! Although I think that match might've been better written `(val
>> 6) & 0b11`, but it'd be really nice for the compiler to catch those type
of errors!

  - Clark


On Fri, Mar 28, 2014 at 5:54 AM, Vladimir Pouzanov <farcal...@gmail.com>wrote:

> There's one thing that I often have to deal in embedded code — doing match
> on a few bits from an I/O register, which is commonly u32:
>
> let val : u32 = ...;
> match (val & 0b11) >> 6 {
>   0b00 => ...,
>   0b01 => ...,
>   0b10 => ...,
>   _ => {}
> }
>
> You can clearly see two problems here: I need to provide a catch-all
> match, even if the code guarantees a limited set of values; also I lost
> 0b11, and there's no warning due to catch all.
>
> Is it possible to make rustc aware of such cases?
>
> What would be totally awesome is some kind of [] operator for ints, that
> would extract bits, like that:
>
> match val[6..7] { ... }
>
> Is that something of interest to community? I would be willing to write an
> RFC for that, and possibly extend the compiler.
>
> --
> Sincerely,
> Vladimir "Farcaller" Pouzanov
> http://farcaller.net/
>
> _______________________________________________
> Rust-dev mailing list
> Rust-dev@mozilla.org
> https://mail.mozilla.org/listinfo/rust-dev
>
>


-- 
Clark.

Key ID     : 0x78099922
Fingerprint: B292 493C 51AE F3AB D016  DD04 E5E3 C36F 5534 F907
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to