frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

A clickable visual guide to the Rust type system

https://rustcurious.com/elements/
202•stmw•4d ago

Comments

zwnow•8h ago
I like it, looks cool on desktop, but a mobile view would be cool to have as well. Having to scroll from left to right is a little awkward. Just as a side note
dxxvi•7h ago
I agree. With a 1920-pixel wide monitor, I have to scroll horizontally to see everything.
orphea•7h ago
It looks like about 2110 pixels is the minimum window width at which the horizontal scroll disappears.
davsti4•5h ago
Ctrl-- (browser zoom down to 80%)
zwnow•5h ago
Why would I do that if there is stuff like CSS where the dev responsible for the implementation could've built it responsive from the start.

Ironically this does not surprise me on a Rust based website.

WD-42•4h ago
For all the rust programming you do on your phone?
zwnow•4h ago
There's absolutely no reason to not make a website responsive. Its even expected considering how little effort it takes.
Arch-TK•3h ago
It would slightly defeat the point of arranging it the way it is.

But I also don't think the arrangement is that useful.

stmw•2h ago
Nothing to do with the content, but not sure there's not reason - it seems a lot of responsive websites are low density and poorly formatted on desktop just so it is mobile-first. Just based on observations, doesn't seem like it's little effort for most people.
CodeMage•2h ago
I occasionally read about programming when I'm not programming. Some of that reading happens on my phone.
WD-42•33m ago
Blogs sure. This is a reference. Seems silly to potentially compromise the UI for its primary purpose just so random people from HN can better read it from the toilet.
ashvardanian•7h ago
Was on the front page under 24h ago: https://news.ycombinator.com/item?id=45167401
stmw•4h ago
OP here - yes, something didn't work with dup detection?, this one was submited days ago, before then one you linked and both ended up on the front page. Certainly not intentional.
Tade0•2h ago
I'm happy it was posted again because I missed the previous post and I happen to need this cheatsheet right now.
Jtsummers•1h ago
If it had no or few comments, the dupe won't be treated as a dupe after some period of time. Then your submission probably ended up in the second chance pool and we get this situation. It happens pretty often.
q3k•6h ago
Is it just me, or does this seem a surprisingly bad teaching aid? I mean, it's correct and concise, but it almost distracts from the things that actually matter. I feel if I was learning Rust again this would've been almost useless, if not actually demotivating (because of how much complexity it shoves in your face all at once).

It reminds me of one of the ways of visually laying out elementary particles according to the Standard Model. And now I wonder how much that representation is also actually detrimental to its use as a teaching aid.

boxed•6h ago
> It reminds me of one of the ways of visually laying out elementary particles according to the Standard Model. And now I wonder how much that representation is also actually detrimental to its use as a teaching aid.

The Periodic Table does seem like the inspiration. The crucial difference being that the Periodic Table has that shape for a reason. Take the first column of this page for example: u8, i8, bool. Ok, probably 8 bits big so good so far, but then that SAME ROW also has fn(T...) -> U, const T, mut T. Only two of which are related in any way with eachother, let alone the 8 bits column which is 100% not the same thing.

Contrast to the Periodic Table where the first row has H and He which both only use the base electron shell. H is to the left because it has (when neutral) 1/2 electrons in it's shell and He to the right because it has 2/2. Then going down from He are all the nobel gases which all have full electron shells.

Going down on the right most side of this page has just a bunch of random stuff.

Anyway, the reason people try to draw things like the Periodic Table is because it's super good, but the people who do it think it's good marketing, not based on physics/chemistry, missing the entire point.

q3k•6h ago
Right, I also have some chemistry knowledge, so maybe that's why this felt off (form over function?) to me.

There's a reason labs continue to have the modern periodic table on their wall even though they have Wikipedia in their pockets, and it's not just because they get freebies from lab equipment vendors :).

dathinab•4h ago
yes

the main issue here is that it's basically a list of thing which are "lang_item"s, i.e. have a `#[lang = ...]` attribute or are build in `&/&mut/str/[T]` etc. (but then for some reasons lists combinations of them!?). But `#[lang]` is mainly there to map types to some compiler special casing which might be as trivial as a optimization hint...

and the thing with that is it's

- not useful for teaching *at all* as it's not representing the semantic/logical building blogs, or what "core" means in rust terms or what you have to learn when learning the language or anything. _It pretty much only is relevant if you write the compiler or the standard library for rust_.

- isn't really that useful for know what the "core" of rust is (as many of this items only have a lang tag to make sure some "special case" optimizations, compiler messages, etc. map correctly, and at least in the past you also didn't really have to have all lang items to use rust in a _very_ cut down way)

- conflicts with the term of lib-core (which is a very cut down version of lib-std for embedding use-cases where you e.g. might not have alloc, but you can even write rust without lib-core)

E.g. `Termination` isn't a "core" rust feature, it's a nice customization hook which main exist so that you can have all of `!, (), ExitCode, Result<T,E>` as return types of main, which is mostly irrelevant outside of some QoL edge cases. In general you don't need to know about it and in 99% of cases you shouldn't implement it either.

E.g. Deref,DerefMut, Index, IndexMut, the various Range types, the various operator aren't really special in any way except "hey they have first class syntax" and thats it, the #[lang] tag just tell the compiler "if you find += map it to AddAsing::add_assign".

E.g. the lang tag on `Ordering` is basically a optimization hint AFIK.

etc. etc.

there really is little use for the overview outside of a curiosity and calling it the "core elements" of rust is really just very very misleading

MeetingsBrowser•3h ago
> not useful for teaching at all ... _It pretty much only is relevant if you write the compiler or the standard library for rust_.

This seems a little hyperbolic.

> isn't really that useful for know what the "core" of rust is

In the same way it isn't useful for python developers to know what the stack and heap are, maybe.

> conflicts with the term of lib-core

I don't know what group of people might see this and get it confused with lib-core. Most people looking at this will never encounter lib-core directly, the rest are unlikely to look at this and think it has anything to do with lib-core.

> Deref,DerefMut, Index, IndexMut, the various Range types, the various operator aren't really special in any way except "hey they have first class syntax"

first class syntax makes them pretty special IMHO

> there really is little use for the overview outside of a curiosity

I think its a great way to get a high level view of the Types/Traits provided by Rust.

dathinab•2h ago
But what the author really mixes up is that lang item is in now way the same as "a core part of rust".

lang item is only a way to tag things to be special known to the compiler, which sometimes is related to implementation details of the compiler which have little to do with the language design

which also means the following statement

> The purpose is to demystify what can be built purely in library code.

is not fully right.

E.g. at least all of Ordering, Option, Result, Clone can be build just fine in library, the lang item is mainly there for optimization hints (and in case of Option FFI layout reasons), but it's an implementation detail which doesn't really needs them to be lang items it was just more convenient to do so when implementing the compiler. A compiler could just give similar properties to anything which "looks like" them. There are subtle fiddly reasons why you maybe don't want to do that for now but technically an implementation detail anyway.

And lot of the things which technically can be implemented in a library (e.g. Display) practically kinda can't, as this would cause major interoperability issues.

Oh also some special macros you can't implement in a library are missing, but that just seems like a minor oversight of the otherwise quite complete list.

But most importantly this is not the conceptual core of the language (but a overlap with it) which would include stuff which has no need to be lang tagged but is a fundamental core design aspect of rust (e.g. Waker for async rust).

For a technical aspect of what needs special handling Ordering, Result and some other parts do not, it's just conveniently makes certain things mostly related to optimizations easier to implement.

From a high level POV especially in context of teaching rust it contains too many low level parts for niche extension functionality (e.g. panic stuff, termination trait) or too advanced to belong in a high level overview IMHO. And misses a lot of things you would include in a teaching the core of rust for people which learn rust overview.

I mean without question the author put a lot of work into it and it's not useless, but IMHO badly named as a listing of lang items just isn't exactly core of rust language design, or core of how you use it.

It it an important listing for changing the rust compiler or writing your own lib-core, tho.

But that means the the thing its effectively most useful for is an advanced topic, so I wouldn't use it for teaching rust. Too many parts which are core of teaching rust missing (e.g. Debug) while exposing students to too many advanced topics in a way where they look as relevant as relevant parts.

titouanch•6h ago
How this is structured reminds me of the periodic table.
SifJar•3h ago
Given the title "Elements of Rust", I suspect that is very much intentional.
pwdisswordfishz•3h ago
Yeah, except this one is much more arbitrary in its choice of groupings and arrangement. Why is the boolean and Unicode scalar type in the same column as floating-point types? Why is the ! type not next to enums if () is next to tuples? (Both are neutral elements of their respective type-formation operations.) How is Sized to Drop as Copy is to Clone? You can go on and on. If you take the "periodic table" framing seriously, you can see some actual correspondences on display (like between plain operators and compound assignment operators), but they drown in a sea of spurious ones.

It's like infographics. Pretty visuals, but little to no insight.

germandiago•6h ago
That is nice. I absorbed a lot of understandable info in a very short time since I am familiar with some other statically typed languages.
worldsayshi•4h ago
Does Rust not have built in Traits for string representations (like Show) or json representations of data?
danielheath•4h ago
Those are in (widely used) packages like serde
bonzini•4h ago
String representations are obtained with the Display trait, which automatically results in an implementation of to_string() as well.
dathinab•4h ago
it has Display and Debug trait

both require a `fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>` function

while they work the same semantically it's "convert to string for displaying" and convert to string for debugging" (where debugging could be log messages, or print line debugging etc. by default debug for strings will do string escaping and for structs does print the structure/fields/type name in some semi standard way).

the Formatter is mostly just a string writer/sink, which also exposes a fixed set of formatting options and some utility methods

if a type implements Display through stuff I will skip over you then can also write `instance_of_type.to_string()` and get a string.

This trait are used in the default formatting mechanism used by e.g. `println!()` which other libraries (e.g. log) can use through `format!` and some other more internal/95% of case you don't need to know stuff. E.g. `println!("{a}, {a:?}, {a:#?}")` will in order print the display formatting of a, the debug formatting of a and then the alternative debug formatting (if there is one, else the normal one). And other options like pad left, floating point format options etc. exist too.

Through it should be noted that rust doesn't contain build in serialization, through nearly everything uses the library/traits/types from `serde` for that.

oytis•4h ago
I feel like I need a guide for the guide
abricq•4h ago
Makes me think of another Rust visualisation of the memory layouts, that I find amazing: https://johnbsmith.github.io/Informatik/Rust/Dateien/Rust-co...

Especially helpful if you come from C / C++

stmw•44m ago
That's a nice one, hadn't seen it before for some reason
mattlutze•4h ago
I love a page that doesn't react to my browser width.
phsilva•36m ago
Reminds me of https://cosmic.mearie.org/2014/01/periodic-table-of-rust-typ.... Link not available to me, WBM has it https://web.archive.org/web/20240706045446/http://cosmic.mea....

Claude can now create and edit files

https://www.anthropic.com/news/create-files
263•meetpateltech•4h ago•157 comments

We all dodged a bullet

https://xeiaso.net/notes/2025/we-dodged-a-bullet/
317•WhyNotHugo•3h ago•197 comments

Dropbox Paper mobile App Discontinuation

https://help.dropbox.com/installs/paper-mobile-discontinuation
18•mercenario•24m ago•1 comments

Tomorrow's Emoji, Today: Unicode 17.0 Has Arrived

https://jenniferdaniel.substack.com/p/tomorrows-emoji-today-unicode-170
14•ChrisArchitect•32m ago•3 comments

A new experimental Go API for JSON

https://go.dev/blog/jsonv2-exp
87•darccio•3h ago•13 comments

An attacker’s blunder gave us a look into their operations

https://www.huntress.com/blog/rare-look-inside-attacker-operation
75•mellosouls•2h ago•45 comments

Mistral AI raises 1.7B€, enters strategic partnership with ASML

https://mistral.ai/news/mistral-ai-raises-1-7-b-to-accelerate-technological-progress-with-ai
650•TechTechTech•12h ago•356 comments

ICE Is Using Fake Cell Towers to Spy on People's Phones

https://www.forbes.com/sites/the-wiretap/2025/09/09/how-ice-is-using-fake-cell-towers-to-spy-on-p...
214•coloneltcb•2h ago•67 comments

Weave (YC W25) is hiring a founding AI engineer

https://www.ycombinator.com/companies/weave-3/jobs/SqFnIFE-founding-ai-engineer
1•adchurch•1h ago

Building a DOOM-like multiplayer shooter in pure SQL

https://cedardb.com/blog/doomql/
63•lvogel•3h ago•3 comments

X open sourced their latest algorithm

https://github.com/twitter/the-algorithm
174•mxstbr•3h ago•104 comments

I solved a distributed queue problem after 15 years

https://www.dbos.dev/blog/durable-queues
46•Bogdanp•1d ago•11 comments

Memory Integrity Enforcement

https://security.apple.com/blog/memory-integrity-enforcement/
4•circuit•12m ago•1 comments

A clickable visual guide to the Rust type system

https://rustcurious.com/elements/
202•stmw•4d ago•34 comments

You too can run malware from NPM (I mean without consequences)

https://github.com/naugtur/running-qix-malware
153•naugtur•8h ago•93 comments

Go for Bash Programmers – Part II: CLI Tools

https://github.com/go-monk/from-bash-to-go-part-ii
26•reisinge•1d ago•3 comments

How can England possibly be running out of water?

https://www.theguardian.com/news/ng-interactive/2025/aug/17/how-can-england-possibly-be-running-o...
284•xrayarx•3d ago•443 comments

Anscombe's Quartet

https://en.wikipedia.org/wiki/Anscombe%27s_quartet
89•gidellav•1d ago•23 comments

Yet Another TypeSafe and Generic Programming Candidate for C

https://github.com/brightprogrammer/MisraStdC
36•brightprogramer•3d ago•3 comments

U.S. Added 911,000 Fewer Jobs in the Year Ended in March

https://www.wsj.com/economy/jobs/us-job-growth-revision-a9777d98
71•JumpCrisscross•2h ago•2 comments

What happens when private equity buys homes in your neighborhood

https://www.npr.org/sections/planet-money/2025/09/09/g-s1-87699/private-equity-corporate-landlords
32•pseudolus•1h ago•7 comments

Disrupting the DRAM roadmap with capacitor-less IGZO-DRAM technology

https://www.imec-int.com/en/articles/disrupting-dram-roadmap-capacitor-less-igzo-dram-technology
22•ksec•4h ago•9 comments

William James at CERN (1995)

http://bactra.org/wm-james-at-cern/
21•benbreen•3d ago•4 comments

Hallucination Risk Calculator

https://github.com/leochlon/hallbayes
89•jadelcastillo•7h ago•28 comments

New Mexico is first state in US to offer universal child care

https://www.governor.state.nm.us/2025/09/08/new-mexico-is-first-state-in-nation-to-offer-universa...
629•toomuchtodo•4h ago•495 comments

Google to Obey South Korean Order to Blur Satellite Images on Maps

https://www.barrons.com/news/google-to-obey-south-korean-order-to-blur-satellite-images-on-maps-6...
111•gnabgib•5h ago•66 comments

iPhone dumbphone

https://stopa.io/post/297
618•joshmanders•1d ago•362 comments

Synthesizing Object-Oriented and Functional Design to Promote Re-Use

https://cs.brown.edu/~sk/Publications/Papers/Published/kff-synth-fp-oo/
25•andsoitis•2d ago•4 comments

Liquid Glass in the Browser: Refraction with CSS and SVG

https://kube.io/blog/liquid-glass-css-svg/
451•Sateeshm•21h ago•111 comments

Strong Eventual Consistency – The Big Idea Behind CRDTs

https://lewiscampbell.tech/blog/250908.html
127•tempodox•13h ago•56 comments