Expand description
Перобразование примитивных числовых типов через метод трейта AsPrim
(замена опреатора as
).
§Стандартная реализация с оператором as
.
Изначально rust предоставляет нам возможность преобразования примитивных типов с помощью опреатора as
.
В следующих примерах показано, как опреатор as
может сбивать с толку из-за своей семнтики:
use core::f64::consts::PI;
let radius = 10_i32;
let circle_area = 2 as f64 * PI * radius as f64;
Даже скобки не спасают:
let circle_area = (2 as f64) * PI * (radius as f64);
§Реализация AsPrim
Трейт AsPrim
и вспомогательные ему FromPrim
и ToPrim
преднозначены для того, чтобы добиться функционального стиля в преобразовании примитивных типов без оператора as
.
let circle_area = 2.as_::<f64>() * PI * radius.as_::<f64>();
let vec: Vec<f32> = vec![2.as_(), circle_area.as_(), 4_isize.as_()];
Также вы можете использовать FromPrim
, как будто используете From
:
let num = f64::as_from(10_i32);
Или использовать ToPrim
для преобразования напрямую:
let num = 2.to_f32();