Module as_prim

Source
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();

Traits§

AsPrim
FromPrim
ToPrim