If you think that’s good, then you’re gonna love this “simplified” real code posted as a real issue on one of my Github repos.
Edit: updated link to address the stack-trace comment
That’s not actual code though, it looks like some kind of trace. Notice the filenames at the end of each line.
The actual solution the issue opener there might be looking for is to disable C++ parsing, since it’s not actually C++ code, it’s just some text they pasted into VSCode and they’re wondering why their editor can’t handle it.
Image Transcription: Code
[Transcriber’s note: the first line in the following transcription is incorrect. After the equals, there should be eight instances of the word “Option”, each succeeded by a less-than symbol, then two brackets, like
()
, before the first greater-tha symbol. However, if you type a less-than symbol on Lemmy, it seems to strip that symbol and whatever word comes next out of the source when you save the comment.]type Wtf = Option>>>>>>>; let two = Some(Some(Some(Some(Some(Some(None)))))); let three = Some(Some(Some(Some(Some(None))))); let six = Some(Some(None)); unsafe { assert_eq!( std::mem::transmute::(two) * std::mem::transmute::(three) std::mem::transmute::(six) ); }
I am a human who transcribes posts to improve accessibility on Lemmy. Transcriptions help people who use screen readers or other assistive technology to use the site. For more information, see here.
Good human, but why not use tesseract though? I mean it works quite well with monospace fonts
Still needs to be checked over to make sure it didn’t get anything wrong. In my experience the mistakes AI make with monospace fonts tend to be very awkward to notice (like 1 and l and I and | being interchanged), so I’d have to go over with a fine tooth comb which, for me, since I type quickly, isn’t noticeably faster and is a lot more boring.
deleted by creator
loud suicide noises
Definitely looks
unsafe
to me.For those interested, this is because of how Rust uses value gaps to represent its nullable/enum structures. E.g., like how
None
forOption NonZeroU8
[sic, can’t get formatting to work] is represented internally by a0
instead of a wrapping structure.When you have that many layers around a unit, it will start at
0
and bump the internal representation for eachSome
you turn into aNone
.It’s kinda like lambda calculus numbers
And yet still more better than writing a serious macro
Since all of the expressions just wrap a
None
, I wouldn’t be surprised if the transmutes basically get compiled to0
, making the assertion at the endassert_eq!(0 * 0, 0)
.Nah these are the actual integer representations. Otherwise you would have
Some(None) == Some(Some(None))
which is way too Javascripty for Rust folks.
Is this how you do Fin in peasant languages?
No, not at all. It’s a joke post, abusing the in-memory representation of the
Option
type to construct numbers. When nesting theOption
type, it turns into a densely packed bit vector…And if I understand the purpose of
Fin
correctly, you’re picking on the one ‘peasant language’ that actually has something like that built-in.
In Rust, you can specify the type of an array as e.g[
. Which is an array containing values of type ]u8
(unsigned 8-bit integer) with a fixed, compile-time-guaranteed length of3
. So,[
could be used to represent an RGB color, for example. ]
It is an array, not a set, but well, close enough.