Awful Rust snippets for fun and profit
448 subscribers
49 photos
54 links
seen something awful and want to post it here? send it to @goldsteinq
Download Telegram
you can access the return type of a macro by unifying it with some variable
playground
🤯13👍4🔥3🤔2❤1
postmono const expression conditions
note that you’d also need to do a similar check for alignment, which is omitted for brevity
UPD: as @arjentix pointed out, this will also only work in cargo build/cargo test; the check will be skipped in cargo check
playground
🔥7👍1
a bit late to the party, but couldn’t pass this one
method resolution depends on compiler’s mutable internal state, which you can observe by calling a method on an integer literal
playground
Rust issue (two Zulip threads linked inside)
CI failures for naive fix
🤔12😱9🎉4❤1👍1😁1🤯1
found this one while thinking about size of uninhabited types. Ralf seems to agree it’s a bug, so the patch will probably be accepted
playground
UCG issue
proposed patch
❤6🔥5👍1🤯1
it compiles.
playground
⚡7🤔4🔥3🙈1
you can have unnameable traits with accessible methods
playground
reference
🤯25🤔4🔥3👍1🤡1
match match is legal and can be occasionally useful

- playground
- real-world example from rust-analyzer
- people even do if if sometimes

thanks to @LennyLizowzskiy for suggesting this!
🤯17👍6🥰3😐2❤1🔥1
a slightly more fun slash cursed variation on a standard “enum-instead-of-bool” trick

playground
don’t use booleans — an explanation on why would you even want that

thanks to @Ddystopia_0 for inspiring this one!
👀7❤4👍2😱1🥴1
parsing sequences (like dates or version strings) by matching on part index

playground
original example

thanks to @kanashimia for suggesting this one!
🤯13🔥5👍2
1.80 now warns on #[cfg(skip)], so here’s a workaround

playground
release notes about the warning

(also yay 300 subscribers!)
🔥12😁7⚡3😨3👎1
wrote down some thoughts about error handling, specifically a pattern that I call “progress pattern” (probably it has another name somewhere, but I’m not aware of it)
https://github.com/GoldsteinE/gh-blog/blob/master/error_progress/README.md
thanks to @meowaffle for reviewing this!

(btw, are y’all ok with breaking the format like this sometimes?)
👍18🔥1😨1
iex by @purplesyringa automatically adds its attribute to the docs by injecting a <style> tag

code link
🐳9❤2🤯2
mixed-site hygiene might be surprising

original blogpost (read it, it’s cool!)
playground

thanks to @alexpyattaev for suggesting this!
🔥10🤯4👍2❤1🥴1
cyclic associated types are okay under lazy normalization / next solver
(you need ?Sized though, otherwise it tries to prove Assoc: Sized and fails)

godbolt
tracking issue
🤯13
macros can close over their environment, “breaking” hygiene

playground

I’d like to give a link to documentation here, but I don’t think this is actually documented anywhere? neither reference nor TLBORM mention it as far as I can see

UPD: ferrocene specification
❤5🤯3👍2😁1