Watch Intro Video

What is Rust?

Rust is a programing language. Rust is blazingly fast and memory-efficient: with no runtime or garbage collector, it can power performance-critical services, run on embedded devices, and easily integrate with other languages.

What is WebAssembly? 

WebAssembly is a new type of code that can be run in modern web browsers — it is a low-level assembly-like language with a compact binary format that runs with near-native performance and provides languages such as C/C++, C#, and Rust with a compilation target so that they can run on the web. It is also designed to run alongside JavaScript, allowing both to work together.

Is this course right for you?

If you plan to start your career as a developer or improve your programming skills, this course is right for you. Learn how to build a browser game with minimal JS and Rust code compiled into webAssembly instructions.

You will get the confidence and skills required to start your projects during this course. In addition, you will get the right mindset to apply for a developer career.

What are you going to work on?

You will build the Snake game from scratch. You will learn to write code in Rust language, static type, compiled language.

The course starts with an explanation and practical examples of the Rust language. You will learn Rust-specific features such as "moving" and "copying."

Rust doesn't have a garbage collector. Memory is cleared when the values are getting out of the scope. You will learn how to manage this concept with ease.

The next feature you will learn of is borrowing and references. Through references, you will be able to access values without owning them.

In the beginning lectures, we will also talk about memory management in Stack and the Heap structures, modularity, strings, and other essential topics.

After Rust's introduction lectures, you will start building your Snake game. You will learn how to structure the application modular and cleanly. 

You will build your own JS frontend, exposed through a simple Webpack development server. Later, you will transform JS implementation into TS (Typescript). This will specify types and be on the same page as Rust code.

Then, you will build your rust backend code, the backbone of our game. You will learn how to compile Rust code into WebAssembly code. WebAssembly is code that can run in the browser. It's faster (almost Native speed) and more efficient than JS.

At the end of the course, we will create a production server,  and deploy our game to Heroku, so anybody on the internet can play our game.


  • Basic programming knowledge

Course curriculum

  • 2

    Rust Preparation

    • Rust installation

    • Rust Versions

    • Main Func

    • Mut Variables

    • Cargo Init

  • 3

    Basics Types

    • New function

    • Primitive types

    • [AI] Prim Numbers 2

    • Primitive Types 3

  • 4

    Move & Copy

    • AI Stack

    • AI More Stack

    • String Heap

    • String Move

    • AI Moves additional explanation

    • Return moved value

    • Copying age

  • 5

    Reference & Borrowing

    • References

    • Mutable borrow

    • AI Mutable Borrow Example

    • Dereference

    • AI Dereferencing

  • 6


    • String vs &str

    • String slice

    • String Slice +

    • Clone

  • 7

    Box & Struct

    • Box type

    • Struct

    • Struct functions, methods

    • Constructors

  • 8


    • Enums

    • Enum values

    • Enum match

    • If Let

    • Struct no fields

  • 9


    • Trait

    • Trait narrowing

  • 10


    • Modularity

    • Import options

    • Mod keyword

    • Nested modules

    • Pub fields

    • Super keyword

    • External lib

    • Display Trait

  • 11

    Into to WebAssembly

    • WebAssembly start + Link

    • More wasm

    • Load Wasm in Browser

    • Dev Server

    • [AI] webpack dev server

    • Copy plugin

    • Fetch wasm

    • Import to wasm

    • Wasm Memory

    • JS Memory

  • 12

    Preparing the Game

    • Pack Webassembly

    • Init Our Code

    • [AI] pkg files

    • Import FN to webassembly

    • Bootstrap

    • Wee alloc

  • 13

    Starting the Game

    • World struct

    • Getter width

    • Get canvas

    • DrawWorld

    • Create snake

    • Draw Snake

    • [AI] Debugger

  • 14

    Update the World

    • World Update

    • Set Timeout

    • Typescript

    • Snake random idx

    • Direction

    • Move in one row

    • Up and Down

    • Function refactor

  • 15

    Moving Snake

    • Keydown events

    • Change snake dir

    • Snake Cells

    • Cell Ptr

    • Invalid pointer

    • Render all cells

    • Snake color

    • Refactor directions

    • Direction profiling

  • 16

    Move Snake Cells

    • Move cells

    • Change snake dir check

    • Improve snake dir

  • 17

    Reward Cell

    • Reward cell

    • Import Date to Rust

    • Random function

    • Check if body contains reward

    • Consume reward cell

    • AI Reward cell

    • Fn to gen reward

    • Reward cell generate fix

  • 18

    Game status

    • Game Status

    • Simple UI

    • Start the game

    • Handle game status

    • Draw game status

  • 19

    Game Outcomes

    • Win Case

    • Lost Case

    • Mapping function

    • Some reward cell

    • Add points

    • Handle play loop

  • 20


    • Prod Server

    • CLI Installations

    • Package commands

    • Deployment, Last Lecture


Software Engineer

Filip Jerga

My name is Filip Jerga and I am an experienced software engineer and freelance developer. I have a Master's degree in Artificial Intelligence and several years of experience working on a wide range of technologies and projects from C++ development for ultrasound devices to modern mobile and web applications in React and Angular. Throughout my career, I have acquired advanced technical knowledge and the ability to explain programming topics clearly and in detail to a broad audience. I invite you to take my course, where I have put a lot of effort to explain web and software engineering concepts in a detailed, hands-on and understandable way.


  • How to get help when I am stuck with the course?

    Every video contains a discussion where you can create a post describing an issue. The instructor usually responds within 1 business day.

  • What to do when I am unhappy with the course ?

    Within 30 days of the purchase, you can ask for a full refund. No questions asked. Your happiness is our priority.

  • Do I need to watch every lecture of such a really extensive course

    Of course not! Every lecture is committed (explained in the introduction section). You can start watching at any lecture. Just download the correct version of the project attached to lecture resources.

Eincode Access Options

  • Single Course Access

    • Lifetime and unlimited Access to "Rust & WebAssembly with JS (TS) - The Practical Guide"


    Access to this course only.

    Get started now
  • Monthly Membership

    • Unlimited Access!
    • Access to any current course!
    • Access to future courses!

    $19.00 / month

    Cancel Anytime!

    Get started now
  • Annual Membership

    • Unlimited Access!
    • Access to any current course!
    • Access to future courses!

    $190.00 / year

    Cancel Anytime!

    Get started now