Features of Rust
Rust is a system programming language. Rust provides the following features:
1. Zero cost abstraction
In Rust, we can add abstractions without affecting the runtime performance of the code. It improves the code quality and readability of the code without any runtime performance cost.
2. Error messages
In C++ programming, there is an excellent improvement in error messages as compared to GCC. Rust goes one step further in case of clarity. Error messages are displayed with (formatting, colors) and also suggest misspellings in our program.
3. Type inference
Rust provides the feature of a Type inference which means that it determines the type of an expression automatically.
4. Move semantics
Rust provides this feature that allows a copy operation to be replaced by the move operation when a source object is a temporary object.
5. Threads without data races
A data race is a condition when two or more threads are accessing the same memory location. Rust provides the feature of threads without data races because of the ownership system. Ownership system transmits only the owners of different objects to different threads, and two threads can never own the same variable with write access.
6. Pattern matching
Rust provides the feature of pattern matching. In pattern matching, patterns in Rust are used in conjunction with the 'match' expressions to give more control over the program's control flow. Following are the combinations of some patterns:
7. Guaranteed memory safety
Rust guaranteed the memory safety by using the concept of ownership. Ownership is a middle ground between the memory control of C and the garbage collection of java. In Rust programs, memory space is owned by the variables and temporarily borrowed by the other variables. This allows Rust to provide the memory safety at the compile time without relying on the garbage collector.
8. Efficient C bindings
Rust provides the feature of 'Efficient C bindings' means that the Rust language can be able to interoperate with the C language as it talks to itself. Rust provides a 'foreign function interface' to communicate with C API's and leverage its ownership system to guarantee the memory safety at the same time.
9. Safe memory space allocation
In Rust, memory management is manual, i.e., the programmer has explicit control over where and when memory is allocated and deallocated. In C language, we allocate the memory using malloc function and then initialize it but Rust refuses these two operations by a single '~' operator. This operator returns the smart pointer to int. A smart pointer is a special kind of value that controls when the object is freed. Smart pointers are "smart" because they not only track where the object is but also know how to clean it up.