Hands-On Systems Programming with Rust

Course

Online

£ 150 + VAT

Description

  • Type

    Course

  • Methodology

    Online

  • Start date

    Different dates available

Take advantage of Rust to ensure safety and concurrencyScripting languages will provide safety, but not concurrency and speed, while traditional systems programming languages such as C and C++ will definitely give you speed and some concurrency, but forget about safety! If you need safety, concurrency, and speed, then Rust is the only viable option.In this course, you will learn how Rust guarantees memory and thread safety at compile-time, yet uses zero-cost abstractions without the runtime overhead of a garbage collector. You'll learn how to monitor the flow of data through a pipeline by building your own middleware utility. You'll learn how to utilize I/O to interact with the command line, work with standard library mpsc channels to perform data flows, and create an ergonomic timer for your project. You'll apply key concepts in every section while creating your own middleware tool in Rust along the way.By the end of this practical course, you will feel comfortable designing safe, consistent, parallel, and high-performance applications in Rust using systems programming.This course should appeal to intermediate Linux and general Unix programmers, network programmers, and C/C++ programmers interested in learning different approaches to concurrency. Prior knowledge of basic programming concepts is required, and a working knowledge of Rust is assumed.All related code files are placed on a GitHub repository at: About the Author
.
Nathan Stocks has spent the last 20 years working in software development, mostly in the field of backend infrastructure. He fell in love with Rust in 2016 and began teaching it in 2017. For the past several years, he has focused on systems-level programming. He maintained the AVbin audio library (written in C) from 2011-2013. He has had tons of fun learning, using, and teaching Rust at conferences and online. He also loves Python and PostgreSQL, and still occasionally suffers from nightmares about C and C++

Facilities

Location

Start date

Online

Start date

Different dates availableEnrolment now open

About this course

Explore Rust's package registry for discovering and sharing code
Use multithreading to unlock the power of multiple cores
Get to know data-flow rate and speed through a pipeline
Display time-based statistics using stderr
Build your own middleware project to control the flow of data between two processes
Best practices and techniques to set up your project for success
Test and publish your own project on crates.io

Questions & Answers

Add your question

Our advisors and other users will be able to reply to you

Who would you like to address this question to?

Fill in your details to get a reply

We will only publish your name and question

Reviews

This centre's achievements

2021

All courses are up to date

The average rating is higher than 3.7

More than 50 reviews in the last 12 months

This centre has featured on Emagister for 4 years

Subjects

  • Editors
  • Programming
  • Writing
  • Systems
  • Project
  • Layout
  • Teaching
  • Benefits

Course programme

Preparing for Systems Programming with Rust 6 lectures 27:11 The Course Overview This video provides an overview of the entire course. Systems Programming in Rust Here, see the overview of what Rust is, where it came from, and why we might want to use it. • Describe what Rust is • Explain how Rust came to be • Explain the benefits of Rust Configuring Your Editor/IDE Rust is a difficult language to learn and use. Rust support in your IDE/Editor helps a lot. • Show the website that lists major IDEs/Editors and how to configure them • Show how to find Rust support for IDEs/Editors not on the list • Demonstrate the benefits of Rust IDE support in IntelliJ The Many Faces of Cargo We need a tool to create, manage, build, run, document, and test our code. • Overview cargo’s capabilities • Demonstrate creating a binary application • Demonstrate creating a library Preview Finished Project The student does not know what we are going to build for this course, so let’s show them. • Describe the problem of processing data without progress indicators • Show processing data with and without our project • Describe the capabilities of our project Layout the Skeleton of the Project We have no project to work in, yet. • Select a name and location for the project • Create the project with cargo and configure it • Select a version control system and configure it Preparing for Systems Programming with Rust - Quiz Preparing for Systems Programming with Rust 6 lectures 27:11 The Course Overview This video provides an overview of the entire course. Systems Programming in Rust Here, see the overview of what Rust is, where it came from, and why we might want to use it. • Describe what Rust is • Explain how Rust came to be • Explain the benefits of Rust Configuring Your Editor/IDE Rust is a difficult language to learn and use. Rust support in your IDE/Editor helps a lot. • Show the website that lists major IDEs/Editors and how to configure them • Show how to find Rust support for IDEs/Editors not on the list • Demonstrate the benefits of Rust IDE support in IntelliJ The Many Faces of Cargo We need a tool to create, manage, build, run, document, and test our code. • Overview cargo’s capabilities • Demonstrate creating a binary application • Demonstrate creating a library Preview Finished Project The student does not know what we are going to build for this course, so let’s show them. • Describe the problem of processing data without progress indicators • Show processing data with and without our project • Describe the capabilities of our project Layout the Skeleton of the Project We have no project to work in, yet. • Select a name and location for the project • Create the project with cargo and configure it • Select a version control system and configure it Preparing for Systems Programming with Rust - Quiz The Course Overview This video provides an overview of the entire course. The Course Overview This video provides an overview of the entire course. The Course Overview This video provides an overview of the entire course. The Course Overview This video provides an overview of the entire course. This video provides an overview of the entire course. This video provides an overview of the entire course. Systems Programming in Rust Here, see the overview of what Rust is, where it came from, and why we might want to use it. • Describe what Rust is • Explain how Rust came to be • Explain the benefits of Rust Systems Programming in Rust Here, see the overview of what Rust is, where it came from, and why we might want to use it. • Describe what Rust is • Explain how Rust came to be • Explain the benefits of Rust Systems Programming in Rust Here, see the overview of what Rust is, where it came from, and why we might want to use it. • Describe what Rust is • Explain how Rust came to be • Explain the benefits of Rust Systems Programming in Rust Here, see the overview of what Rust is, where it came from, and why we might want to use it. • Describe what Rust is • Explain how Rust came to be • Explain the benefits of Rust Here, see the overview of what Rust is, where it came from, and why we might want to use it. • Describe what Rust is • Explain how Rust came to be • Explain the benefits of Rust Here, see the overview of what Rust is, where it came from, and why we might want to use it. • Describe what Rust is • Explain how Rust came to be • Explain the benefits of Rust Configuring Your Editor/IDE Rust is a difficult language to learn and use. Rust support in your IDE/Editor helps a lot. • Show the website that lists major IDEs/Editors and how to configure them • Show how to find Rust support for IDEs/Editors not on the list • Demonstrate the benefits of Rust IDE support in IntelliJ Configuring Your Editor/IDE Rust is a difficult language to learn and use. Rust support in your IDE/Editor helps a lot. • Show the website that lists major IDEs/Editors and how to configure them • Show how to find Rust support for IDEs/Editors not on the list • Demonstrate the benefits of Rust IDE support in IntelliJ Configuring Your Editor/IDE Rust is a difficult language to learn and use. Rust support in your IDE/Editor helps a lot. • Show the website that lists major IDEs/Editors and how to configure them • Show how to find Rust support for IDEs/Editors not on the list • Demonstrate the benefits of Rust IDE support in IntelliJ Configuring Your Editor/IDE Rust is a difficult language to learn and use. Rust support in your IDE/Editor helps a lot. • Show the website that lists major IDEs/Editors and how to configure them • Show how to find Rust support for IDEs/Editors not on the list • Demonstrate the benefits of Rust IDE support in IntelliJ Rust is a difficult language to learn and use. Rust support in your IDE/Editor helps a lot. • Show the website that lists major IDEs/Editors and how to configure them • Show how to find Rust support for IDEs/Editors not on the list • Demonstrate the benefits of Rust IDE support in IntelliJ Rust is a difficult language to learn and use. Rust support in your IDE/Editor helps a lot. • Show the website that lists major IDEs/Editors and how to configure them • Show how to find Rust support for IDEs/Editors not on the list • Demonstrate the benefits of Rust IDE support in IntelliJ The Many Faces of Cargo We need a tool to create, manage, build, run, document, and test our code. • Overview cargo’s capabilities • Demonstrate creating a binary application • Demonstrate creating a library The Many Faces of Cargo We need a tool to create, manage, build, run, document, and test our code. • Overview cargo’s capabilities • Demonstrate creating a binary application • Demonstrate creating a library The Many Faces of Cargo We need a tool to create, manage, build, run, document, and test our code. • Overview cargo’s capabilities • Demonstrate creating a binary application • Demonstrate creating a library The Many Faces of Cargo We need a tool to create, manage, build, run, document, and test our code. • Overview cargo’s capabilities • Demonstrate creating a binary application • Demonstrate creating a library We need a tool to create, manage, build, run, document, and test our code. • Overview cargo’s capabilities • Demonstrate creating a binary application • Demonstrate creating a library We need a tool to create, manage, build, run, document, and test our code. • Overview cargo’s capabilities • Demonstrate creating a binary application • Demonstrate creating a library Preview Finished Project The student does not know what we are going to build for this course, so let’s show them. • Describe the problem of processing data without progress indicators • Show processing data with and without our project • Describe the capabilities of our project Preview Finished Project The student does not know what we are going to build for this course, so let’s show them. • Describe the problem of processing data without progress indicators • Show processing data with and without our project • Describe the capabilities of our project Preview Finished Project The student does not know what we are going to build for this course, so let’s show them. • Describe the problem of processing data without progress indicators • Show processing data with and without our project • Describe the capabilities of our project Preview Finished Project The student does not know what we are going to build for this course, so let’s show them. • Describe the problem of processing data without progress indicators • Show processing data with and without our project • Describe the capabilities of our project The student does not know what we are going to build for this course, so let’s show them. • Describe the problem of processing data without progress indicators • Show processing data with and without our project • Describe the capabilities of our project The student does not know what we are going to build for this course, so let’s show them. • Describe the problem of processing data without progress indicators • Show processing data with and without our project • Describe the capabilities of our project Layout the Skeleton of the Project We have no project to work in, yet. • Select a name and location for the project • Create the project with cargo and configure it • Select a version control system and configure it Layout the Skeleton of the Project We have no project to work in, yet. • Select a name and location for the project • Create the project with cargo and configure it • Select a version control system and configure it Layout the Skeleton of the Project We have no project to work in, yet. • Select a name and location for the project • Create the project with cargo and configure it • Select a version control system and configure it Layout the Skeleton of the Project We have no project to work in, yet. • Select a name and location for the project • Create the project with cargo and configure it • Select a version control system and configure it We have no project to work in, yet. • Select a name and location for the project • Create the project with cargo and configure it • Select a version control system and configure it We have no project to work in, yet. • Select a name and location for the project • Create the project with cargo and configure it • Select a version control system and configure it Preparing for Systems Programming with Rust - Quiz Preparing for Systems Programming with Rust - Quiz Preparing for Systems Programming with Rust - Quiz Preparing for Systems Programming with Rust - Quiz Operating with I/O 6 lectures 35:26 Read from stdin, Count Bytes, and Write to stdout We need to read data from somewhere, process it, and write it back out somewhere else. • Read data from stdin • Process the data • Write data to stdout Inspecting Values with dbg!() We need an ergonomic way to print extra debugging information during development. • Identify a candidate debugging expression • Wrap the expression in dbg!() • Analyze the debugging output Working Effectively with cargo fmt and cargo clippy Code is harder to read and distracting conflicts often occur when code is not styled consistently and using the same idioms. • Call out problems of not adhering to standards and idioms • Demonstrate cargo fmt and cargo clippy • Demonstrate automating the tools Handling Errors Gracefully Ignoring and not handling errors leads to unsafe and buggy code. • Describe situations which occur when errors are not handled properly • Demonstrate handling errors by choosing to crash • Demonstrate handling errors more gracefully Handling Command Line Arguments with Clap We need a way to parse command-line arguments to affect the behavior of our program. • Describe the need to handle command-line arguments • Demonstrate how to use the clap library in code • Demonstrate the command-line handling in the compiled project Reading/Writing Files, Buffered I/O, and Traits We need to be able to read and write files, it needs to be fast, and we would like it to be convenient. • Demonstrate reading and writing files • Demonstrate buffered reading and writing files for better performance • Demonstrate using Read/Write traits to make code convenient Operating with I/O - Quiz Operating with I/O. 6 lectures 35:26 Read from stdin, Count Bytes, and Write to stdout We need to read data from somewhere, process it, and write it back out somewhere else e between our threads, preferably in a way that avoids locking. MPSC channels are a good tool for that. • Describe our need to communicate between threads • Explain how MPSC channels work • Use MPSC channels...

Additional information

Prior knowledge of basic programming concepts is required. A working knowledge of Rust is assumed

Hands-On Systems Programming with Rust

£ 150 + VAT