SorteKanin@feddit.dk to Rust@programming.dev · 7 months agoInline const expressions have been stabilisedgithub.comexternal-linkmessage-square11fedilinkarrow-up17arrow-down10
arrow-up17arrow-down1external-linkInline const expressions have been stabilisedgithub.comSorteKanin@feddit.dk to Rust@programming.dev · 7 months agomessage-square11fedilink
minus-squarekevincox@lemmy.mllinkfedilinkarrow-up0·7 months agoThis is a nice small feature. I’m curious about the commit description: foo(const { 1 + 1 }) which is roughly desugared into struct Foo; impl Foo { const FOO: i32 = 1 + 1; } foo(Foo::FOO) I would have expected it to desugar to something like: foo({ const TMP: i32 = 1 + 1; TMP }) But I can’t seem an explanation why the struct with impl is used. I wonder if it has something to do with propagating generics.
minus-square0v0@sopuli.xyzlinkfedilinkarrow-up0·7 months agoIt’s because it has to work in pattern contexts as well, which are not expressions.
minus-squareSorteKanin@feddit.dkOPlinkfedilinkarrow-up0·7 months agoWait, in pattern context? How? Can you give an example?
minus-square0v0@sopuli.xyzlinkfedilinkarrow-up1·7 months agofn foo(x: i32) { match x { const { 3.pow(3) } => println!("three cubed"), _ => {} } } But it looks like inline_const_pat is still unstable, only inline_const in expression position is now stabilized.
This is a nice small feature. I’m curious about the commit description:
foo(const { 1 + 1 })
which is roughly desugared into
struct Foo; impl Foo { const FOO: i32 = 1 + 1; } foo(Foo::FOO)
I would have expected it to desugar to something like:
foo({ const TMP: i32 = 1 + 1; TMP })
But I can’t seem an explanation why the struct with
impl
is used. I wonder if it has something to do with propagating generics.It’s because it has to work in pattern contexts as well, which are not expressions.
Wait, in pattern context? How? Can you give an example?
fn foo(x: i32) { match x { const { 3.pow(3) } => println!("three cubed"), _ => {} } }
But it looks like
inline_const_pat
is still unstable, onlyinline_const
in expression position is now stabilized.