Rust ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážá¡ááœá²á·ááẠáááºážááá¯á·ááá¬áá¬á áá¬ážáá¬ážááŸááºážá¡áá áºááᯠááŒá±áá¬ááẠáááºážááŒá±á¬ááºáááá«áááº- 1.35á Rust ááẠáá¯á¶ááŒááºá áááºáá»áááŒá®áž áááá±á¬ááºáá±á¬ áááá¯ááááºáá»á¬ážááᯠáá±ážáá¬ážááá¯ááºá á±ááá·áº áááá¯ááááºáá¬áá¬á áá¬ážáá áºáá¯ááŒá áºáááºá
á¡áááºá ááá·áºááœáẠRust ááᯠrustup ááŸáá
áºááá·áº ááá·áºááœááºážáá¬ážááŒá®ážááŒá
áºáá«áá áááºááẠá¡áááá·áºááŒáá·áº á¡ááºááááºáá¯ááºááá¯ááºáá«áááºá
$rustup update áááºááŒáááºáááºá
á¡ááºááááºááœáẠá¡áááá¡áá¬ááŸá¬ Box á¡ááœáẠFná FnOnceá FnMutá ááááºááŒááºážááá¯ááºáᬠááá¹ááá¬áá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºáž ááŒá áºáááºá ,ááá»áá±á¬ ,ááá»áá±á¬ á¡áá®ážáá®ážá dbg!() macro áá¯áá±á«áºáá±á¬ ááá¯á¶ááŒá¯á¶áá±á¬áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááá¯á· pointers áá»á¬ážááá¯á· ááááºáá¬ážááá¯ááºááá·áºá áœááºážáááºááᯠáá±á«ááºážááá·áºááŒááºážááŸá¬ á¡ááŒá±á¬ááºážááŒáá»ááºáááŸááá² ááá¯ááŒá áºááá¯ááºáá»á±ááŸáááŒá®áž áá¯á¶ááŸááºá á¬ááŒáá·áºááá¯ááºááᯠáááºááŒáááºááœá¬ážáá«ááŒá®á
á¡áá±ážá áááºá¡áá»ááºá¡áááºáá»á¬ážá¡ááœááº
- áá¬ážááŸááºážá¡áá
áºááœáẠBox á¡ááœáẠFná FnOnceá FnMut á
ááá¯ááºáá»á¬ážááᯠááá·áºááœááºážáá¬ážáá«áááºá ,ááá»áá±á¬ ,ááá»áá±á¬ á¡áá®ážáá®ážá
ááᯠá€áá¯ááºááẠá¡áá¯ááºáá¯ááºáá«áááº-
fn foo(x: áá±á¬ááºá Ạu8>) -> Vec {
vec![1á 2á 3á 4].into_iter().map(x).collect()
}Box ááŸáááºáž ááá¯ááºááá¯ááºáá¯ááºážáááºááá¯ááºáá«áááºá :
fn foo(x: áá±á¬ááºá Ạ) {
x()
} - ááᯠááááºááŸá¯áá»á¬ážááᯠááá¯á¶ááŒá¯á¶áá±á¬ fn ááá¯á· ááœáŸááºááŒáá»ááºáá»á¬ážááá¯á· áá¬á
áºááá¯ááºáá«ááŒá®á
ááᯠá€áá¯ááºááẠááá¬ážáááºáááº-
/// áá±ážáááºážáá±ážáá°ááœá²áá»á¬ážááẠ`ááá¯á¶ááŒá¯á¶áá±á¬ fn` ááœáŸááºááŒáá»ááºááᯠáá»á±á¬áºááœá¬ážáá±á¬ á¡áá»áá¯ážá¡á á¬ážáá»á¬ážááŒá áºáááºá
unsafe fn call_unsafe_fn_ptr(f: unsafe fn()) {
f()
}fn áááºá() {
// áá±ážáááºážáá±áž- áá¯á¶á á¶ááœá²áá»á¬áž áááŸááá«á
// ááááºáá¬ážááŒááºážááẠáá±ážáááºážáá±á¬ á¡áá¬áá»á¬áž ááŒá¯áá¯ááºááŒááºážá០áááºááŒáááºá áœá¬ áá¬ážáá®ážáá¬ážáááºá
ááá¯á¶ááŒá¯á¶ {
call_unsafe_fn_ptr(|| {
dbg!();
});
}
} - á¡ááŒá±á¬ááºážááŒáá»ááºáááŸááá² dbg!() macro ááᯠáá±á«áºááẠá
áœááºážáááºááᯠááá·áºááœááºážáá¬ážáááºá
áááºááẠá€áááºáááá¯ááá¯á· á áá¬ážáááºá¡áá»áá¯á·ááᯠáá±ážááá¯á·áá«áá áááºáááá¯ááẠáááºážáááááºááᯠáááá·áºáá¯ááºáááºááŒá áºáááºá á¥ááá¬-
fn áááºá() {
mut x = 0;á¡áááºá dbg!(x == 1) {
x += 1;
}dbg!(x);
}áááºá€áá¯ááºááᯠrun áá±á¬á¡áá«áááºááœá±á·áááá·áºáááº-
[src/main.rs:4] x == 1 = á¡ááŸá¬áž
[src/main.rs:8] x = 0ááá¯áááºá€áá²á·ááá¯á·áá±ážááá¯ááºáááº-
fn áááºá() {
let condition = á¡ááŸááºáá¡áááºá á¡ááŒá±á¡áá± {
dbg!();
}
}áááºá€áá¯ááºááᯠrun áá±á¬á¡áá«áááºááœá±á·áááá·áºáááº-
[src/main.rs:5]
- á
á¶ááŒá
á¬ááŒáá·áºááá¯ááºá á¡á
áááºá¡ááá¯ááºážá¡áá»áá¯á· áááºááŒáááºááœá¬ážáá«ááŒá®á
- f32 ááŸáá·áº f64 á¡ááœáẠáááºážáááºážá¡áá
áºáá»á¬áž
- f32::áááá¹áá°
- f64::áááá¹áá°
ááááºáá±á¬á· áá¯ááºáá±á¬ááºáá»ááºááœá±á á¡ááŒá¬ážáá¶áá«ááºáá²á· ááááááºááᯠáá°ážáá°áá«áááºá á¥ááá¬-
fn áááºá() {
assert_eq!(3.5_f32.copysign(-0.42), -3.5);
} - á¡ááá¯ááºážá¡ááŒá¬ážá¡áá»áá¯ážá¡á
á¬ážáá»á¬ážá¡ááœáẠáááºážáááºážá¡áá
áºáá»á¬áž áááºááá·áºáá¬ážáááºá
- á¡ááá¯ááºážá¡ááŒá¬áž:: áá«ááŸááááºá
- RangeFrom::áá«ááŸááááºá
- RangeTo::áá«ááŸááááºá
- RangeInclusive::áá«áááºáá«áááºá
- RangeToInclusive::áá«áááºáá«áááºá
á€áááºážáááºážáá»á¬ážááŒáá·áº áááºááẠá¡áá»áá¯á·áá±á¬áááºááá¯ážááẠá¡á ááºááá¯ááºááŸááááŸá á¡ááœááºááá° á á áºáá±ážááá¯ááºáááº-
fn áááºá() {
á¡áááºá (0..=10).áá«áááºáááº(&5) {
println!("áá«ážáá¯ááᯠáá¯áá០áááºá¡áá áá«áááºáááºá");
}
} - áááºááŒáááºáá±á¬ API áá»á¬ážá á¬áááºáž á¡ááŒáá·áºá¡á á¯á¶ááᯠáááºááœá±á·ááá¯ááºáááºá áá®ááŸá¬
- f32 ááŸáá·áº f64 á¡ááœáẠáááºážáááºážá¡áá
áºáá»á¬áž
- á€á¡ááºááááºááœááºá Clippy (á€áááºááŸá¬ á¡ááŸá¬ážá¡ááœááºážáá»á¬ážá
áœá¬á¡ááœáẠááá·áºáá¯ááºááᯠá
á
áºáá±ážáá±ážááá·áº áááá¯ááááºáá
áºáá¯ááŒá
áºáááº) drop_bounds á¡ááœáẠá
á
áºáá±ážáá»ááºá¡áá
áºáá
áºáᯠáááºááá·áºáá¬ážáááºá áááºááá·áºáááºáá»ááºáá
áºáá¯áááºááŸááºáá±á¬á¡áá« á€á
á
áºáá±ážááŸá¯ááẠá¡áá¯ááºáá¯ááºáááº- T- ááœáŸááºáá»ááŒááºáž- áá±áá¯áá»áá¯ááºáá±á¬ááºááá·áºáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡ááœááº-
fn foo (x:T){}T- Drop ááá·áºáááºáá»ááºááŸáááŒááºážááẠáááŒá¬ááááá¯áááᯠá¡ááŸá¬ážá¡ááœááºážááŒá áºááŒá®áž á¡áá»áá¯á·á¡áá»áá¯ážá¡á á¬ážáá»á¬ážááŸá¬ u8 áá²á·ááá¯á· áá»ááºáá»ááºážáááºáá¯ááºáá¶ááá±á¬ááŒá±á¬áá·áº ááŒá áºáááºá (á€á¡ááŒá±á¬ááºáž ááá¯ááá¯áááºááŸá¯ááá¯ááºáá«áááºá áá®ááŸá¬)
- Cargo (áá¬áá¬á áá¬áž áááºáá±á·áá»áºáááºáá±áá»á¬) ááœáẠááá¯ážáááºááŸá¯ááŸáá·áº ááŒááºáááºááŸá¯áá»á¬áž á¡áá»á¬ážá¡ááŒá¬ážá á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážá á¬áááºážá¡ááŒáá·áºá¡á á¯á¶
source: linux.org.ru
