Build Rust Apps With Dev Containers | by Andy Watt | Feb, 2022

Have you ever been fascinated about making an attempt Rust? Get began in seconds with VSCode and Devcontainers!

The rusty remains of a ship
Photograph by on

Rust is the brand new child on the block, and it’s at the moment — and fairly rightly — producing quite a lot of hype. There are quite a lot of causes to love Rust, however I feel that they’re nicely coated in lots of different articles. As a substitute of waxing lyrical about Rust itself, I’ll use Rust to additional present that Dev Containers with VS Code are very highly effective instruments that I feel all builders ought to have of their toolbox!

I’m guessing that whereas many of you readers of technical weblog posts can have heard of Rust. However I’d additionally guess that not that many have put in the tooling in your machines and began to have a play with Rust?

This isn’t going to be a Rust language tutorial — which can be a lot of these on the market! This text will as a substitute present the way to arrange a developer setting for Rust, utilizing Visible Studio Code, and Docker. I’ll display the way to construct a fully-featured Rust growth setting in a Docker container so you may get began with out having to put in something Rust-specific in your machine.

As an example the purpose, I’ll construct up a easy API instance utilizing . In fact, it wouldn’t be any enjoyable if I didn’t additionally add in some testing, so I’ll get to that as nicely!

As per my earlier tutorials on the subject, the conditions in your machine are the next:

The code for this may be discovered . Clone the repo if you wish to skip to the top!

Photograph by on

Begin by creating an empty folder, cd into it, after which open VSCode. Copy and paste this into your terminal, or do it the old school approach by way of explorer.

mkdir rust-devcontainer; 
cd rust-devcontainer;
code .;

When VSCode opens, hit F1, and seek for Add Growth Container. Be aware: you could have put in the .

Seek for ‘Rust’ and add the container config recordsdata.

Select the default model (buster on the time of writing).

Skip any further options, and hit ‘OK.’

When the config recordsdata are routinely added, VSCode will present a pop-up that permits you to open the container. Click on on ‘Reopen in Container’ to open the setting in Docker.

Be aware: if the pop up doesn’t seem, hit F1 and seek for ‘reopen in container’

Show to your self that you’re now operating in a container — with all the Rust tooling put in — by opening a terminal and checking that the Rust instruments can be found:

As soon as you might be within the Rust setting, establishing a easy API is fairly simple. Begin by initialising a brand new Rust mission by opening the terminal in VSCode and typing the next command:

cargo init

To indicate that we actually are up and operating with a rust setting already, go to the srcmain.rs file, and add the next:

fn fundamental() 
println!("Hiya World!");

Then, within the VSCode terminal, kind this:

cargo run

That’s it! We have now a fully-featured Rust growth setting up and operating, and we’re able to construct any variety of apps.

Subsequent, let’s construct a demo API utilizing Actix.

Add a dependency for Actix within the cargo.toml file.

Be aware: I’m utilizing a beta model for now.

[dependencies]
actix-web = "4.0.0-beta.21"

Then, delete the ‘hi there world’ instance and add this to the srcmain.rs file:

To verify it really works, open the terminal, kind

cargo run

This can begin the API operating on http://127.0.0.1:8080

And should you go to that URL in a browser, you’ll see that it’s behaving as anticipated.

All good thus far, and we in all probability might name it a day at this. However, I’m by no means glad till there’s not less than one unit check operating, so let’s try this.

Photograph by on

Again within the srcmain.rs file, add within the following code beneath the logic:

And run the check by going into the terminal in VSCode and typing the next:

cargo check

You must see the check passing!

This can be a usable check setup, however I do like a check explorer in order that VSCode feels extra like a ‘actual IDE’. As ever, the group has offered one.

Within the file .devcontainerdevcontainer.json add two further traces to the extensions property

"swellaby.vscode-rust-test-adapter",
"ms-vscode.test-adapter-converter"

You will want to exit and reenter the distant container to see the adjustments (F1, again to WSL, then again to the devcontainer). When you will have reloaded the setting, you’ll see the acquainted VSCode check explorer. You may run the assessments straight from explorer!

Assuming that every one is nicely, you may navigate and run the assessments from the VSCode check explorer.

I feel this can be a good place to cease for now. We have now arrange a reasonably complete Rust growth setting with a fundamental API, a unit check instance, and a number of the fundamental Rust extensions for VSCode put in.

As a result of that is all configured utilizing devcontainers, this setup may be shared amongst a staff very simply to get everybody up and operating with a constant Rust dev setting in actually seconds — simply so long as it takes to clone a repo!

I hope this was a helpful learn for these of you who made it to the top! I hope that I’ve transformed not less than a number of new ‘Rustaceans’!

Need to Join?You may get in contact on .

More Posts