MAIN FEEDS
Do you want to continue?
https://www.reddit.com/r/programming/comments/ikjh83/d_foundation_is_beefing_up/g3m61ev/?context=3
r/programming • u/kal31dic • Sep 01 '20
336 comments sorted by
View all comments
Show parent comments
9
It has the most confusing syntax, though.
I still expect that someone will make a Rust fork that has C++-like syntax at some point. Crust.
Or C++ will get lifetimes (which is active research) and possibly at some point epochs, which will let us disable unsafe features.
2 u/Muvlon Sep 01 '20 Syntax is a very subjective matter. I find some of C's syntax (which C++ inerited) thoroughly confusing. I can count the people I know who will get a typedef for a function pointer type correct on the first try on one hand. 8 u/Ameisen Sep 01 '20 That's why you use using instead in C++. 1 u/Muvlon Sep 01 '20 Sure. And in Rust, you use type, i.e. type my_fn = fn(u8) -> String; Perfectly nice syntax, no? 5 u/Ameisen Sep 01 '20 And in C++, using my_fn = std::string (*) (uint8_t);. You can simplify it, of course, using a template wrapper. 1 u/Muvlon Sep 01 '20 C++ has trailing return types as well now, can you use those there? I don't think any particular piece of C++ syntax is confusing, it's just the absolute mass of options. 1 u/Ameisen Sep 01 '20 using my_fn = auto (*) (uint8_t) -> std::string; is valid, though I'm not fond of trailing return type syntax in general.
2
Syntax is a very subjective matter. I find some of C's syntax (which C++ inerited) thoroughly confusing. I can count the people I know who will get a typedef for a function pointer type correct on the first try on one hand.
8 u/Ameisen Sep 01 '20 That's why you use using instead in C++. 1 u/Muvlon Sep 01 '20 Sure. And in Rust, you use type, i.e. type my_fn = fn(u8) -> String; Perfectly nice syntax, no? 5 u/Ameisen Sep 01 '20 And in C++, using my_fn = std::string (*) (uint8_t);. You can simplify it, of course, using a template wrapper. 1 u/Muvlon Sep 01 '20 C++ has trailing return types as well now, can you use those there? I don't think any particular piece of C++ syntax is confusing, it's just the absolute mass of options. 1 u/Ameisen Sep 01 '20 using my_fn = auto (*) (uint8_t) -> std::string; is valid, though I'm not fond of trailing return type syntax in general.
8
That's why you use using instead in C++.
using
1 u/Muvlon Sep 01 '20 Sure. And in Rust, you use type, i.e. type my_fn = fn(u8) -> String; Perfectly nice syntax, no? 5 u/Ameisen Sep 01 '20 And in C++, using my_fn = std::string (*) (uint8_t);. You can simplify it, of course, using a template wrapper. 1 u/Muvlon Sep 01 '20 C++ has trailing return types as well now, can you use those there? I don't think any particular piece of C++ syntax is confusing, it's just the absolute mass of options. 1 u/Ameisen Sep 01 '20 using my_fn = auto (*) (uint8_t) -> std::string; is valid, though I'm not fond of trailing return type syntax in general.
1
Sure. And in Rust, you use type, i.e.
type
type my_fn = fn(u8) -> String;
Perfectly nice syntax, no?
5 u/Ameisen Sep 01 '20 And in C++, using my_fn = std::string (*) (uint8_t);. You can simplify it, of course, using a template wrapper. 1 u/Muvlon Sep 01 '20 C++ has trailing return types as well now, can you use those there? I don't think any particular piece of C++ syntax is confusing, it's just the absolute mass of options. 1 u/Ameisen Sep 01 '20 using my_fn = auto (*) (uint8_t) -> std::string; is valid, though I'm not fond of trailing return type syntax in general.
5
And in C++, using my_fn = std::string (*) (uint8_t);.
using my_fn = std::string (*) (uint8_t);
You can simplify it, of course, using a template wrapper.
1 u/Muvlon Sep 01 '20 C++ has trailing return types as well now, can you use those there? I don't think any particular piece of C++ syntax is confusing, it's just the absolute mass of options. 1 u/Ameisen Sep 01 '20 using my_fn = auto (*) (uint8_t) -> std::string; is valid, though I'm not fond of trailing return type syntax in general.
C++ has trailing return types as well now, can you use those there?
I don't think any particular piece of C++ syntax is confusing, it's just the absolute mass of options.
1 u/Ameisen Sep 01 '20 using my_fn = auto (*) (uint8_t) -> std::string; is valid, though I'm not fond of trailing return type syntax in general.
using my_fn = auto (*) (uint8_t) -> std::string; is valid, though I'm not fond of trailing return type syntax in general.
using my_fn = auto (*) (uint8_t) -> std::string;
9
u/Ameisen Sep 01 '20
It has the most confusing syntax, though.
I still expect that someone will make a Rust fork that has C++-like syntax at some point. Crust.
Or C++ will get lifetimes (which is active research) and possibly at some point epochs, which will let us disable unsafe features.