# Advanced Features So far we learned about the most commonly used parts of the Rust programming language. Here we will look at a few aspects of the language you may run into once in a while but may not use everyday. This is intended to be used as a reference for when you encounter any unknowns. The features covered here are useful in very specific situations. In this chapter we will cover - [Unsafe Rust](./Unsafe%20Rust.md): How to opt out of some of Rust's guarantees and take responsibility for manually upholding those guarantees - [Advanced traits](./Advanced%20Traits.md): associated types, default type parameters, fully qualified syntax, supertraits, and the new type pattern in relation to traits - [Advanced types](): more about the newtype pattern, type aliases, the never type, and dynamically sized types - [Advanced functions and closures](): function pointers and returning closures - [Macros](): ways to define code that defines more code at compile time a