Proper way to create Errors?

Hey all.

Does anyone know of a good article on the proper way to create Errors in Rust? I know that there are two Traits which I can implement within my code, however I'm a bit perplexed when I'm supposed to use each, along with how to properly implement them.

Thank you!

The error module!