Traits that can be derived

For some traits, the compiler itself knows how to implement them for a type. If we want them, we only have to tell it that we do, and it will take care of the rest for us.

We still have the option of manually implementing derivable traits, but that would usually just be a waste of time.

Telling the compiler that we want a data type to have a derivable trait is easy.

Here, we're telling it that we want our CopyExample enumeration to implement Copy and Clone:

#[derive(Copy, Clone)]
pub enum CopyExample {
Good,
Bad,
}

A trait can only be derived if the people who created the trait were able to write a program to generate the trait implementation. When we write #[derive(Copy, Clone)], we're telling the compiler to go find those programs for deriving Copy and Clone in the source code of the packages where the traits were defined, and run those programs to generate the source code for the trait implementations before it continues compiling. If the decisions that need to be made to implement a trait are too complex for a program to make without user input, the trait can't be derived.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.220.245.140