# A Rust Starter⁠

**URL:** <https://users.rust-lang.org/t/a-rust-starter/77625>\
**Category:** community\
**Created:** [June 28, 2022, 8:41pm UTC](https://users.rust-lang.org/t/a-rust-starter/77625 "2022-06-28T20:41:06Z")\
**Posts on this page:** 1\
**Showing post:** 15

<div class="post-metadata">

**Author:** ![quinedot](https://sea1.discourse-cdn.com/flex019/user_avatar/users.rust-lang.org/quinedot/32/17693_2.png) [@quinedot](https://users.rust-lang.org/u/quinedot)\
**Post date:** [June 29, 2022, 7:01pm UTC](https://users.rust-lang.org/t/a-rust-starter/77625/15 "2022-06-29T19:01:02Z")

</div>

> [@steffahn](#):
>
> I. e. I do _not_ think it's a requirement, and I _do_ believe that Rust is probably more beginner friendly than C, and there's little value in learning all those quirks (null terminated strings, header files, incomprehensible type signatures syntax where the variable name is hidden somewhere in the middle of it, etc..) unless you actually want to program in C, too; or you simply _want_ to learn it for fun or for unrelated reasons.

Anecdotal, but -- a year or so ago, a friend was taking an introductory programming course and asked for some help. The course was in "C with C++ i/o" approximately, for whatever reason. Their program would run to completion, but give random-seeming incorrect solutions.

Their root problems were, roughly,

- Using arrays instead of dynamic vectors/strings (perhaps a course restriction, unsure)
- Using a 0-sized array specifically
- An off-by-one error elsewhere

And they were smashing the stack \[1\]. But having not touched C in awhile and being so immersed in Rust the past couple years, what really blew me away was

- No compiler errors
- Not even any warnings
- No runtime panic/abort either, just straight UB \[2\]

I'm still unsure I would call Rust beginner friendly \[3\], but that definitely put me in the "Rust is more beginner friendly than C" camp.

> [@H2CO3](#):
>
> For this very reason, I find it extremely helpful to have been bitten by UaF or race conditions in C, or iterator invalidation in C++, simply because the learner will then instinctively recognize that Rust isn't just piling arbitrary restrictions on top of each other – rather, the rules are there to enforce memory safety.

This is a thought-provoking point as well.

* * *

1. and reading past the array elsewhere 

2. g++ (pretty sure it was that one) did trigger a smashed-stack warning; other compilers did not 

3. but not sure I wouldn't either; someone here recently pointed out there isn't much data on learning programming with Rust from the start, and was curious about how much of the difficulty comes from having an established viewpoint on programming already; now I'm curious too

---

_[View the full topic](https://users.rust-lang.org/t/a-rust-starter/77625)._
