34ed235885
It's virtually impossible to write a the `num_sq` function to take the Box since it doesn't implement `MulAssign`. |
||
---|---|---|
.. | ||
README.md | ||
as_ref_mut.rs | ||
from_into.rs | ||
from_str.rs | ||
try_from_into.rs | ||
using_as.rs |
README.md
Type conversions
Rust offers a multitude of ways to convert a value of a given type into another type.
The simplest form of type conversion is a type cast expression. It is denoted with the binary operator as
. For instance, println!("{}", 1 + 1.0);
would not compile, since 1
is an integer while 1.0
is a float. However, println!("{}", 1 as f32 + 1.0)
should compile. The exercise using_as
tries to cover this.
Rust also offers traits that facilitate type conversions upon implementation. These traits can be found under the convert
module.
The traits are the following:
From
andInto
covered infrom_into
TryFrom
andTryInto
covered intry_from_into
AsRef
andAsMut
covered inas_ref_mut
Furthermore, the std::str
module offers a trait called FromStr
which helps with converting strings into target types via the parse
method on strings. If properly implemented for a given type Person
, then let p: Person = "Mark,20".parse().unwrap()
should both compile and run without panicking.
These should be the main ways within the standard library to convert data into your desired types.
Further information
These are not directly covered in the book, but the standard library has a great documentation for it.