เชฐเชธเซเชŸ เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ เชŸเซ€เชฎ เชคเซ‡เชฎเชจเซ€ เชญเชพเชทเชพเชจเชพ เชจเชตเชพ เชธเช‚เชธเซเช•เชฐเชฃเชจเซ€ เชœเชพเชนเซ‡เชฐเชพเชค เช•เชฐเซ€เชจเซ‡ เช–เซเชถ เช›เซ‡: 1.35. เชฐเชธเซเชŸ เช เชเช• เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพ เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เช…เชจเซ‡ เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชฒเช–เชตเชพ เชฆเซ‡ เช›เซ‡.

เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฐเชธเซเชŸเช…เชช เชฆเซเชตเชพเชฐเชพ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชฐเชธเซเชŸ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒ เช›เซ‡, เชคเซ‹ เชคเชฎเซ‡ เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:
$ rustup เช…เชชเชกเซ‡เชŸ เชธเซเชฅเชฟเชฐ

เช…เชชเชกเซ‡เชŸเชฎเชพเช‚ เชฎเซเช–เซเชฏ เชตเชธเซเชคเซ เช…เชจเซเช•เซเชฐเชฎเซ‡ Box, Box, Box เชฎเชพเชŸเซ‡ เชฌเช‚เชง เชฒเช•เซเชทเชฃเซ‹ Fn, FnOnce, FnMut เชจเซ‹ เช…เชฎเชฒ เช›เซ‡. เช…เชธเซเชฐเช•เซเชทเชฟเชค เช•เชพเชฐเซเชฏเซ‹ เชฎเชพเชŸเซ‡ เชชเซ‹เช‡เชจเซเชŸเชฐ เชชเชฐ เช•เซเชฒเซ‹เชเชฐ เช•เชพเชธเซเชŸ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เช‰เชฎเซ‡เชฐเชตเชพเชจเซเช‚, dbg!() เชฎเซ‡เช•เซเชฐเซ‹เชจเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเซเช‚ เชนเชตเซ‡ เชฆเชฒเซ€เชฒเซ‹ เชตเชฟเชจเชพ เชถเช•เซเชฏ เช›เซ‡, เช…เชจเซ‡ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ‡ เชธเซเชฅเชฟเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡.

เชตเชฟเช—เชคเซ‹ เชฎเชพเชŸเซ‡:

  • เชจเชตเชพ เชธเช‚เชธเซเช•เชฐเชฃเชฎเชพเช‚, Fn, FnOnce, FnMut เชฒเช•เซเชทเชฃเซ‹เชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเซ‹ เช…เชจเซเช•เซเชฐเชฎเซ‡ Box, Box, Box เชฎเชพเชŸเซ‡ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡.
    เชนเชตเซ‡ เช† เช•เซ‹เชก เช•เชพเชฎ เช•เชฐเชถเซ‡:
    fn foo(x: Box u8>) -> Vec {
    vec![1, 2, 3, 4].into_iter().map(x).collect()
    }

    เชคเชฎเซ‡ Box เชฅเซ€ เชธเซ€เชงเซเช‚ เช•เซเชฒเซ‹เชเชฐ เชชเชฃ เช•เซ‰เชฒ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:
    fn foo(x: Box) {
    x()
    }

  • เชฌเช‚เชง เชนเชตเซ‡ เช…เชธเซเชฐเช•เซเชทเชฟเชค เชเชซเชเชจเชจเชพ เชจเชฟเชฐเซเชฆเซ‡เชถเช•เซ‹ เชชเชฐ เช•เชพเชธเซเชŸ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.
    เชนเชตเซ‡ เช† เช•เซ‹เชก เชฎเชพเชจเซเชฏ เช›เซ‡:
    /// เชธเซ‡เชซเซเชŸเซ€ เช‡เชจเชตเซ‡เชฐเชฟเช…เชจเซเชŸเซเชธ เช เชชเชพเชธ เช•เชฐเซ‡เชฒ `เช…เชธเซเชฐเช•เซเชทเชฟเชค fn` เชชเซ‹เช‡เชจเซเชŸเชฐ เช›เซ‡.
    unsafe fn call_unsafe_fn_ptr(f: unsafe fn()) {
    f()
    }

    fn main() {
    // เชธเชฒเชพเชฎเชคเซ€: เชคเซเชฏเชพเช‚ เช•เซ‹เชˆ เช…เชจเชฟเชตเชพเชฐเซเชฏ เชจเชฅเซ€.
    // เชฌเช‚เชงเชจเซ‡ เชธเซเชฅเชฟเชฐ เชฐเซ€เชคเซ‡ เช…เชธเซเชฐเช•เซเชทเชฟเชค เชตเชธเซเชคเซเช“ เช•เชฐเชตเชพเชฅเซ€ เช…เชŸเช•เชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
    เช…เชธเซเชฐเช•เซเชทเชฟเชค {
    call_unsafe_fn_ptr(|| {
    dbg!();
    });
    }
    }

  • เชฆเชฒเซ€เชฒเซ‹ เชตเชฟเชจเชพ dbg!() เชฎเซ‡เช•เซเชฐเซ‹เชจเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เช‰เชฎเซ‡เชฐเซ€.
    เชœเซ‹ เชคเชฎเซ‡ เช† เชฎเซ‡เช•เซเชฐเซ‹เชฎเชพเช‚ เช…เชฎเซเช• เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟ เชชเชธเชพเชฐ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชฎเซ‡เช•เซเชฐเซ‹ เชคเซ‡เชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เช›เชพเชชเชถเซ‡. เช‰เชฆเชพเชนเชฐเชฃ:
    fn main() {
    เชšเชพเชฒเซ‹ mut x = 0;

    เชœเซ‹ dbg!(x == 1) {
    x += 1;
    }

    dbg!(x);
    }

    เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เช† เช•เซ‹เชก เชšเชฒเชพเชตเซ‹ เช›เซ‹ เชคเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชœเซ‹เชถเซ‹:
    [src/main.rs:4] x == 1 = เช–เซ‹เชŸเชพ
    [src/main.rs:8] x = 0

    เชนเชตเซ‡ เชคเชฎเซ‡ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฒเช–เซ€ เชถเช•เซ‹ เช›เซ‹:
    fn main() {
    let condition = true;

    เชœเซ‹ เชธเซเชฅเชฟเชคเชฟ {
    dbg!();
    }
    }

    เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เช† เช•เซ‹เชก เชšเชฒเชพเชตเซ‹ เช›เซ‹ เชคเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชœเซ‹เชถเซ‹:
    [src/main.rs:5]

  • เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชชเซเชธเซเชคเช•เชพเชฒเชฏเชจเชพ เช•เซ‡เชŸเชฒเชพเช• เชญเชพเช—เซ‹เชจเซ‡ เชธเซเชฅเชฟเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡
    • f32 เช…เชจเซ‡ f64 เชฎเชพเชŸเซ‡ เชจเชตเซ€ เชชเชฆเซเชงเชคเชฟเช“:
      • f32::copysign
      • f64::copysign

      เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เชซเช‚เช•เซเชถเชจเซเชธ เชฌเซ€เชœเชพ เชจเช‚เชฌเชฐเชจเชพ เชšเชฟเชนเซเชจเชจเซ€ เชจเช•เชฒ เช•เชฐเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ:
      fn main() {
      assert_eq!(3.5_f32.copysign(-0.42), -3.5);
      }

    • เชถเซเชฐเซ‡เชฃเซ€ เชชเซเชฐเช•เชพเชฐเซ‹ เชฎเชพเชŸเซ‡ เชจเชตเซ€ เชชเชฆเซเชงเชคเชฟเช“ เช‰เชฎเซ‡เชฐเซ€
      • เชถเซเชฐเซ‡เชฃเซ€:: เชธเชฎเชพเชตเซ‡ เช›เซ‡
      • RangeFrom:: เชธเชฎเชพเชตเซ‡ เช›เซ‡
      • RangeTo:: เชธเชฎเชพเชตเซ‡ เช›เซ‡
      • RangeInclusive:: เชธเชฎเชพเชตเซ‡ เช›เซ‡
      • RangeToInclusive:: เชธเชฎเชพเชตเซ‡ เช›เซ‡

      เช† เชชเชฆเซเชงเชคเชฟเช“ เชฆเซเชตเชพเชฐเชพ เชคเชฎเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เชšเช•เชพเชธเซ€ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ เช•เซ‹เชˆ เชšเซ‹เช•เซเช•เชธ เชฎเซ‚เชฒเซเชฏ เช…เชจเซเช•เซเชฐเชฎเชฎเชพเช‚ เช›เซ‡ เช•เซ‡ เชจเชนเซ€เช‚:
      fn main() {
      เชœเซ‹ (0..=10). เชธเชฎเชพเชตเซ‡ เช›เซ‡(&5) {
      println!("เชถเซ‚เชจเซเชฏเชฅเซ€ เชฆเชธเชฎเชพเช‚ เชชเชพเช‚เชšเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡.");
      }
      }

    • เชคเชฎเซ‡ เชธเซเชฅเชฟเชฐ API เชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซ‚เชšเชฟ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชนเซ€เช‚
  • เช† เช…เชชเชกเซ‡เชŸเชฎเชพเช‚, เช•เซเชฒเชฟเชชเซเชชเซ€ (เช† เชเช• เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช›เซ‡ เชœเซ‡ เชคเชฎเชพเชฐเชพ เช•เซ‹เชกเชจเซ‡ เช˜เชฃเซ€ เชญเซ‚เชฒเซ‹ เชฎเชพเชŸเซ‡ เชคเชชเชพเชธเซ‡ เช›เซ‡) เช เชกเซเชฐเซ‹เชช_เชฌเชพเช‰เชจเซเชกเซเชธ เชฎเชพเชŸเซ‡ เชเช• เชจเชตเซ‹ เชšเซ‡เช• เช‰เชฎเซ‡เชฐเซเชฏเซ‹ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เช•เซ‹เชˆ เช…เชตเชฐเซ‹เชง เชธเซ‡เชŸ เช•เชฐเซ‹ เช›เซ‹ เชคเซเชฏเชพเชฐเซ‡ เช† เชšเซ‡เช• เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡: T: เชกเซเชฐเซ‹เชช - เชธเชพเชฎเชพเชจเซเชฏเช•เซƒเชค เช•เชพเชฐเซเชฏเซ‹ เชฎเชพเชŸเซ‡:
    fn foo(x: T) {}

    T: เชกเซเชฐเซ‹เชช เชชเซเชฐเชคเชฟเชฌเช‚เชง เชฎเซ‹เชŸเชพเชญเชพเช—เซ‡ เชญเซ‚เชฒ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เช•เซ‡เชŸเชฒเชพเช• เชชเซเชฐเช•เชพเชฐเซ‹เชจเซ‡ เชคเชฐเชค เชœ เชฌเชพเช•เชพเชค เชฐเชพเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ u8. (เชคเชฎเซ‡ เช† เชตเชฟเชถเซ‡ เชตเชงเซ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹. เช…เชนเซ€เช‚)

  • เช•เชพเชฐเซเช—เซ‹ (เชญเชพเชทเชพ เชชเซ‡เช•เซ‡เชœ เชฎเซ‡เชจเซ‡เชœเชฐ) เชฎเชพเช‚ เช˜เชฃเชพ เชฌเชงเชพ เชธเซเชงเชพเชฐเชพ เช…เชจเซ‡ เชธเซเชงเชพเชฐเชพเช“, เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซ‚เชšเชฟ

เชธเซ‹เชฐเซเชธ: linux.org.ru

DDoS เชธเซเชฐเช•เซเชทเชพ, VPS VDS เชธเชฐเซเชตเชฐ เชงเชฐเชพเชตเชคเซ€ เชธเชพเช‡เชŸเซเชธ เชฎเชพเชŸเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชนเซ‹เชธเซเชŸเชฟเช‚เช— เช–เชฐเซ€เชฆเซ‹ ๐Ÿ”ฅ DDoS เชธเซเชฐเช•เซเชทเชพ, VPS VDS เชธเชฐเซเชตเชฐเซเชธ เชธเชพเชฅเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชตเซ‡เชฌเชธเชพเช‡เชŸ เชนเซ‹เชธเซเชŸเชฟเช‚เช— เช–เชฐเซ€เชฆเซ‹ | ProHoster