this post was submitted on 05 Mar 2025
9 points (100.0% liked)

Rust

6851 readers
1 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

[email protected]

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 2 years ago
MODERATORS
 

Hello,

This is my first post to this Rust community and I am happy to introduce myself and discuss what I love about this language, but first a little about myself.

I'm Alice, Fluffy to most, and she/her are my pronouns. I'm from the UK. I got a little boy who love like crazy. I'm Autistic, suffer from cPTSD and I also 🩷 Rust!!

Rust I feel appeals to Autistic people because of it's focus on accuracy and correctness. It's a common feeling people have about the language. But as the type of person I am I love it.

I began learning it in 2023, before this I was using C++. Rust showed me the importance of error's as values and helped improve the quality of my code.

Currently I'm writing a game-engine as a hobby. The game-engine is a work in progress (WIP) and I have only just begun it's development. Since the game-engine will natively support various platforms. To ensure consistency I'm writing all the platform specific code manually and building my own custom standard library for my engine, loosely based on the actual Rust standard library.

Right now I have the code in place to create/remove directories and to create, delete, write, read and set file pointer location. Convert UTF8 to UTF16 and output to the console in Unicode (Windows C API uses UTF16) and heap functions to get the process heap and create and delete memory dynamically.

Next will be the 'config.json' for which Serde will be used. Then the logger, and so on.

So it is a WIP but it's fun and given my conditions allows me to do what I love, writing Rust code.

Thanks for reading!!

Alice 🏳️‍⚧️

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 0 points 1 month ago (2 children)

I’ll never understand how the rust community loves TOML (like me) but also loves Rust syntax (totally not like me)

I feel like they are opposite: rust syntax is full of symbols, toml is super minimal and square parentheses are just less “noisy” than curly ones…

[–] [email protected] 1 points 1 month ago (1 children)

Personally, I just think the amount (and use of) symbols needs to match the semantic complexity.
With spoken language, a few dots and commas generally suffice.
With programming languages, I do want to see scopes and whatnot, so I like having braces in place, for example. Something like Python largely turns to word soup in my brain.
With a configuration language, the complexity is almost even simpler than a spoken language, so I really don't need much in terms of symbols.

JSON has a mismatch for use in configuration. The keys in a object don't need to be quoted. The commas after each¹ line in an object really aren't necessary when pretty-printed. And well, JSON not having comments also kind of disqualifies it.

Having said that, not every symbol has to be my brain's favorite thing. I don't particularly care for having each line terminated with a semi-colon. But I do believe that Rust is able to generated such excellent error messages, because the semicolons make it very clear where the statement ends, so I don't mind putting it down.

¹) Don't add a comma after the last line, though, or you'll go to JSON jail.

[–] [email protected] 1 points 1 month ago

Something like Python largely turns to word soup in my brain.

Really? I feel the opposite. I'd much rather have indentation enforced by the language than merely convention.

That said, I prefer braces, mostly because it makes things like inline functions more reasonable (the lambda syntax sucks IMO), and my editor does a great job matching on braces.

JSON has a mismatch for use in configuration. The keys in a object don’t need to be quoted.

The stupidest thing IMO is that JSON came from JavaScript, but it loses the flexibility of JavaScript. The quotes thing is acceptable IMO since it allows for flexibility in keys (e.g. you can have a URL as a key), but these aren't:

  • comments - why don't just let implementations not propagate them?
  • trailing commas - should be optional or required, not forbidden
  • NaN and Infinity - valid floating point numbers, so why are they forbidden?

I don’t particularly care for having each line terminated with a semi-colon

I love that semicolons mean something in Rust. Since pretty much everything is an expression, you only need a semicolon to turn it into a statement. That's really nice!

I don't think it has anything to do with error messages though, plenty of languages do that well without it.

[–] [email protected] 0 points 1 month ago (1 children)

@ex_06 @taladar Personnally it's not that I like the syntax, it's that I love the semantic.

[–] [email protected] 0 points 1 month ago (1 children)

Are you talking about rust or toml? Because if rust, just out of curiosity, would you still like it with keywords instead of symbols?

[–] [email protected] 0 points 1 month ago (1 children)

Rust has very few symbols, especially compared to pre-1.0 when they had ~ (box?) and @ (GC?).

Symbols in modern Rust are pretty reasonable IMO, but maybe that's just stockholm syndrome.

[–] [email protected] 1 points 1 month ago (1 children)

@sugar_in_your_tea @ex_06

- && and || instead of and and or
- :: instead of the simpler .

Just those two changes would help significatly reduce the awkwarness. Even turbofish would be slightly less noizy.

[–] [email protected] 1 points 1 month ago* (last edited 1 month ago)

Idk, && and || are pretty universally common, so I highly doubt they trip anyone up.

:: is a little odd, but at least it's limited to imports. Having it be . makes it a little ambiguous when you see x.y as to whether x is a module or an instance. But it's absolutely fine in other languages, so that's not a hill I'm willing to die on.

The turbofish is disgusting though. I prefer D's template syntax: Type!A or Type!(A, B), though this conflicts with macros. If we have macros all use the same symbol (e.g. println#(...) instead of println!(...)), then we could use the ! instead of the turbofish. But that ship has sailed and it's not clear if my bike shed is a better color.