DEV Community

Sivakumar
Sivakumar

Posted on

Rust Traits

In this blog post, let us see how to work with Traits in Rust

Traits

Traits is equivalent to Interfaces in Java. Traits can be made up of three varieties of associated items such as:

  • Functions and Methods
  • Constants
  • Types

When a type implements a trait it can be treated abstractly as that trait using generics or trait objects.

Create Traits

Traits can be created by using trait keyword.

trait TypeUtils {
    fn is_in_range(&self) -> bool;
}
Enter fullscreen mode Exit fullscreen mode
Implement Traits for a type

It is possible to implement traits for a specific type (primitive or custom types)

In this below example, we can see how to implement TypeUtils trait for some of standard library types

impl TypeUtils for String {
    fn is_in_range(&self) -> bool {
        false
    }
}

impl TypeUtils for i32 {
    fn is_in_range(&self) -> bool {
        true
    }
}

impl TypeUtils for str {
    fn is_in_range(&self) -> bool {
        true
    }
}
Enter fullscreen mode Exit fullscreen mode

It is also possible to implement Trait for custom types such as Structs. In this below example, we're creating an Employee Struct and implementing TypeUtils trait

struct Employee {
    name: String,
    age: i32,
}

impl TypeUtils for Employee {
    fn is_in_range(&self) -> bool {
        true
    }
}
Enter fullscreen mode Exit fullscreen mode
Call traits methods implemented for a type

After declaring Traits and implementing them for type, let us see how to call the trait methods

fn main() {
    let s: String = String::from("Rust");
    let i: i32 = 100;
    let s1: &str = "Rust is awesome";
    let e: Employee = Employee::new(String::from("John"), 30);
    println!("Is '{s}' within range?: {}", s.is_in_range());
    println!("Is '{i}' within range?: {}", i.is_in_range());
    println!("Is '{s1}' within range?: {}", s1.is_in_range());
    println!("Is {e:#?} within range?: {}", e.is_in_range());
}
Enter fullscreen mode Exit fullscreen mode

I hope this blog post gives you a brief overview about Traits.

All the code examples can be found in this link.

Please feel free to share your feedback.

Happy reading!!!

Top comments (0)