I could be wrong, but I feel like Rust is one of those languages that you might as well just learn from scratch. Sure, you can skip stuff here and there on loops, but there are so many things done differently that I’m not sure teaching someone coming from python would be much different than teaching someone coming from no language or any other language aside from the fact that pointers, references, and such will probably confuse the living hell out of them.
I’d tell them to first get a thorough understanding of C (not “a little C”… that doesn’t mean much, C isn’t a big language anyway).
To be honest with you, I don’t think it’s necessary to learn C first but for the fact that there simply aren’t a ton of Rust learning resources out there yet compared with C. One of the reasons I loved C and picked it up relatively quick was because for every book or video I couldn’t understand, there were hundreds of others… Sometimes one or even five different resources is not helpful for a given student. Rust isn’t at that level yet, so to understand about pointers and references, I think C is still helpful.
Now, C can also be confusing because Rust isn’t C and for example - a C programmer will probably see &something as “pass by reference” or pointer, when in reality, it is much easier to reason about stuff in Rust when you’re thinking about “pass by borrow or move” as opposed to “pass by reference or value.”
But even still, let’s face it - systems programming isn’t simple and there’s not many shortcuts, jumping from Python to C, C++, Rust, objective-C, etc is going to be considerable work no matter how a student goes about it. So in conclusion, I say just make a thorough Rust course… You could choose to have specific examples where you compare Python constructs with Rust’s but that may not be all that effective.
If I were you, I’d also focus on the strengths of Rust… Rust is strong for no runtime overhead (runtime performance), multithreading, and other low-level tasks… If you are having students learn the language by doing something that is best suited for Python, you’re just going to burn them out and make them hate Rust because it’s going to be more difficult (more compiler errors, etc…) with not much return on investment.
On the other hand, if you have them program a sweet concurrent application that does some data crunching faster than Python could, that would show off a real use-case for the language. Obviously, memory safety is a big one, but I doubt you’ll be building mission-critical applications in your course so it’s not as immediately appealing to newbies.