Rustlings Topic: Conversions

Rust offers a multitude of ways to convert a value of a given type into another type.
The simplest form of type conversion is a type cast expression. It is denoted with the binary operator as.
For instance, println!("{}", 1 + 1.0); would not compile, since 1 is an integer while 1.0 is a float. However, println!("{}", 1 as f32 + 1.0) should compile. The exercise using_as tries to cover this.

Rust also offers traits that facilitate type conversions upon implementation. These traits can be found under the convert module. The traits are the following:

  • From and Into covered in from_into
  • TryFrom and TryInto covered in try_from_into
  • AsRef and AsMut covered in as_ref_mutld both compile and run without panicking. These should be the main ways within the standard library to convert data into your desired types.

You may find solution code for the topic from my repo.

Rustlings Topic: Tests

Tests are Rust functions that verify that the non-test code is functioning in the expected manner. The bodies of test functions typically perform these three actions:

  1. Set up any needed data or state.
  2. Run the code you want to test.
  3. Assert the results are what you expect.

Let’s look at the features Rust provides specifically for writing tests that take these actions, which include the test attribute, a few macros, and the should_panic attribute.

You may find solution code for the topic from my repo.

Rustlings Topic: Traits

A trait tells the Rust compiler about functionality a particular type has and can share with other types. We can use traits to define shared behavior in an abstract way. We can use trait bounds to specify that a generic type can be any type that has certain behavior.

Traits are similar to a feature often called interfaces in other languages, although with some differences.

trait is one of the most important Rust feature that you must be familiar with. There are so many trait that Rust provides. Such as Clone, Copy, Debug, Default, Deref, From, Ord etc.

Sometimes you can use Derive macros macro, or sometimes you have to implement trait by yourself. Unfortunately, rustling only focuses on the basic usage of the trait rather than introducing Rust providing traits. So if you want to know more about common traits, I suggest you to read blog article.

You may find solution code for the topic from my repo.