2 ms·
>This is all implemented in userland in the standard library. Last time I checked, in Rust the equivalent code is implemented with a macro hard coded in the com
by simias 8y ago
>This is all implemented in userland in the standard library. Last time I checked, in Rust the equivalent code is implemented with a macro hard coded in the compiler.
You're right and it's still the case as far as I know but I was thinking more about having a customized output, in Rust you can implement the Display interface and completely customize the way the object is serialized for output.
Your sibling comment by AnIdiotOnTheNet shows how to do just that but is it done purely in stdlib or is it actually implementable in the language itself? If it is actually doable in pure Zig I'd recommend showcasing that as part of the "generics" docs because as it is it's a bit odd to have example code that ends up exhaustively matching possible types, it kinds of defeat the purpose of generics and is the cause of my confusion.
Thank you for your answers by the way, they're appreciated. I'm very happy to see all this experimentation around low level "light runtime" languages lately, it's definitely sorely needed. I hope that 20 years from now C won't still be the alpha and omega of low level code.
- AnIdiotOnTheNet 8y agoThe standard lib has no special privileges, it's written entirely using the same language features available to everyone. There are probably 2 reasons the documentation uses a simplified example: 1) the ability to introspect a type for the presence of a field or definition before attempting to use it is relatively new 2) the actual implementation of fmt.format is rather long and involved
- CUViper 8y ago> The standard lib has no special privileges, it's written entirely using the same language features available to everyone. Sort of -- it uses a lot of unstable features that are only available to outsiders with the nightly compiler.
- steveklabnik 8y agoYour parent is talking about Zig, not Rust, I believe.
- CUViper 8y agoAh, ok. I suppose that's still a useful thing to say about Rust std though. :)