Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
Because you're coming from C++: There isn't a detailed specification. For the vast majority of users this isn't a problem at all. The semantics of safe code are essentially what you can observe by testing. But if you ever need to type unsafe, you will end up bouncing between The Rust Reference which is very incomplete, The Nomicon and the Unsafe Code Guidelines.
There is a checker for a lot of the rules which are well-decided-upon, though the exact borrowing model of Rust isn't settled yet (it is settled in the absence of unsafe code, and quite simple there). Miri has a checker for stacked borrows, and I think it's generally good advice to try to make your code clean under cargo miri test. But if you get too deep into the weeds, you'll be pointed to the POPL 2020 paper on Stacked Borrows or scattered internet discussion.
AFAIK this is all possible: https://github.com/SergioBenitez/Rocket/blob/v0.5-rc/examples/databases/src/diesel_sqlite.rs
Because you're coming from C++: There isn't a detailed specification. For the vast majority of users this isn't a problem at all. The semantics of safe code are essentially what you can observe by testing. But if you ever need to type unsafe, you will end up bouncing between The Rust Reference which is very incomplete, The Nomicon and the Unsafe Code Guidelines.
cargo-make is really good for tricky builds.
Apparently there's a fundamental soundness issue that still hasn't been fixed, see https://github.com/rust-lang/rust/issues/39364
I have to agree with /u/Zde-G on this. Rust only hit v1.0 in 2015, and, before that, it was in a state of rapid change. (eg. There was a green threading runtime and a syntax for garbage-collected pointers baked into the language until 2014. (The merge that finished the runtime removal was in November of 2014.)