錆びて減らします。
std :: f32 :: sqrtを使用します。

struct matrix3 {
    X：[[F32;3];3]、
}

struct point3 {
    X：F32、
    Y：F32、
    Z：F32、
}

fn matrix_from_normal（normal：＆point3） - > matrix3 {
    mut result = matrix3 {x：[[0.0;3];3]};

    let length = sqrt（normal.x * normal.x + normor.y * normal.y + normal.z * normal.z）;
    inv_length = 1.0 / length;

    result.x [0] [0] = normal.x * inv_length;
    result.x [0] [1] = normal.y * inv_length;
    result.x [0] [2] = normal.z * inv_length;

    result.x [1] [0] = -normal.y * inv_length;
    result.x [1] [1] = normal.x * inv_length;
    result.x [1] [2] = 0.0;

    result.x [2] [0] = -normal.z * inv_length;
    result.x [2] [1] = 0.0;
    result.x [2] [2] = normal.x * inv_length;

    返品結果;
}

注：錆では、タイプの暗黙的な導入はないため、matrix_from_normal関数の変数のタイプが明確に示されています。さらに、Rustは通常、ネーミング関数と変数にSnake_Caseを使用します。