Rust 1.51 เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจญเจพเจธเจผเจพ เจฐเฉ€เจฒเฉ€เจœเจผ

เจธเจฟเจธเจŸเจฎ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจญเจพเจธเจผเจพ Rust 1.51 เจฆเฉ€ เจฐเจฟเจฒเฉ€เจœเจผ, เจœเฉ‹ เจ•เจฟ เจฎเฉ‹เจœเจผเฉ€เจฒเจพ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉเจ†เจฐเจพ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€, เจชเจฐ เจนเฉเจฃ เจธเฉเจคเฉฐเจคเจฐ เจ—เฉˆเจฐ-เจฒเจพเจญเจ•เจพเจฐเฉ€ เจธเฉฐเจธเจฅเจพ เจฐเจธเจŸ เจซเจพเจŠเจ‚เจกเฉ‡เจธเจผเจจ เจฆเฉ€ เจธเจฐเจชเฉเจฐเจธเจคเฉ€ เจนเฉ‡เจ  เจตเจฟเจ•เจธเจค เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ, เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆเฅค เจญเจพเจธเจผเจพ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจธเฉเจฐเฉฑเจ–เจฟเจ† 'เจคเฉ‡ เจ•เฉ‡เจ‚เจฆเฉเจฐเจค เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจชเฉเจฐเจฌเฉฐเจงเจจ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจ•เฉ‚เฉœเจพ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจœเจพเจ‚ เจฐเจจเจŸเจพเจˆเจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจ‰เฉฑเจš เจ•เจพเจฐเจœ เจธเจฎเจพเจจเจคเจพ เจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ‡ เจธเจพเจงเจจ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆ (เจฐเจจเจŸเจพเจˆเจฎ เจจเฉ‚เฉฐ เจฎเจฟเจ†เจฐเฉ€ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ€ เจฎเฉเฉฑเจขเจฒเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค เจ…เจคเฉ‡ เจฐเฉฑเจ–-เจฐเจ–เจพเจ… เจคเฉฑเจ• เจ˜เจŸเจพ เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ)เฅค

เจœเฉฐเจ—เจพเจฒ เจฆเจพ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจชเฉเจฐเจฌเฉฐเจงเจจ เจชเฉเจ†เจ‡เฉฐเจŸเจฐเจพเจ‚ เจฆเฉ€ เจนเฉ‡เจฐเจพเจซเฉ‡เจฐเฉ€ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจ—เจฒเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฆเฉ‚เจฐ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ˜เฉฑเจŸ-เจชเฉฑเจงเจฐเฉ€ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจนเฉ‡เจฐเจพเจซเฉ‡เจฐเฉ€ เจคเฉ‹เจ‚ เจชเฉˆเจฆเจพ เจนเฉ‹เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจคเฉ‹เจ‚ เจฌเจšเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจ–เฉ‡เจคเจฐ เจจเฉ‚เฉฐ เจ–เจพเจฒเฉ€ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจเจ•เจธเฉˆเจธ เจ•เจฐเจจเจพ, เจจเจฒ เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจกเฉ€เจฐเฉ‡เจซเจฐเฉˆเจ‚เจธ, เจฌเจซเจฐ เจ“เจตเจฐเจฐเจจ, เจ†เจฆเจฟเฅค เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจตเฉฐเจกเจฃ, เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจจเจฟเจฐเจญเจฐเจคเจพ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เจฐเจจ เจฒเจˆ, เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ•เจพเจฐเจ—เฉ‹ เจชเฉˆเจ•เฉ‡เจœ เจฎเฉˆเจจเฉ‡เจœเจฐ เจจเฉ‚เฉฐ เจตเจฟเจ•เจธเจค เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆเฅค crates.io เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจฒเจˆ เจธเจฎเจฐเจฅเจฟเจค เจนเฉˆเฅค

เจฎเฉเฉฑเจ– เจจเจตเฉ€เจจเจคเจพเจตเจพเจ‚:

  • เจจเจฟเจฐเฉฐเจคเจฐ เจœเฉˆเจจเจฐเจฟเจ•เจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจพเจฒ เจœเฉเฉœเฉ€ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจจเฉ‡ เจตเจฟเจ†เจชเจ• เจตเจฐเจคเฉ‹เจ‚ เจฒเจˆ เจนเจฐเฉ€ เจฐเฉ‹เจธเจผเจจเฉ€ เจฆเจฟเฉฐเจฆเฉ‡ เจนเฉ‹เจ, เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจตเจฟเจนเจพเจฐเจ• เจ‰เจคเจชเจพเจฆ (MVP) เจฆเจพ เจฆเจฐเจœเจพ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจนเฉˆเฅค Const generics เจ•เจฟเจธเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฅเจฟเจฐ เจฎเฉเฉฑเจฒเจพเจ‚ เจฒเจˆ เจธเจงเจพเจฐเจฃ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจธเจฅเจพเจˆ เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเฉ€เจฎเจพ เจคเฉฑเจ• เจธเฉ€เจฎเจฟเจค เจ†เจฎ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹, เจ•เจฟเจธเจฎเจพเจ‚ เจœเจพเจ‚ เจœเฉ€เจตเจจ เจ•เจพเจฒเจพเจ‚ เจฆเฉ€ เจจเจนเฉ€เจ‚เฅค เจ‡เจน เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉ‚เจฐเจจ เจ…เฉฐเจ•-เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจˆเจœเจผเจก เจ•เจฟเจธเจฎเจพเจ‚ เจ…เจคเฉ‡ เจเจฌเจธเจŸเฉเจฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจ†เจ•เจพเจฐ เจฆเฉ‡ เจเจฐเฉ‡ เจฒเจˆ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจตเฉˆเจง เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเฉ€ เจนเจฐเฉ‡เจ• เจฐเฉ‡เจ‚เจœ เจฒเจˆ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจ•เจฟเจธเจฎ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‡เจ† เจœเจพ เจธเจ•เฉ‡ เจ•เจฟ เจ•เฉ‹เจˆ เจธเฉ€เจฎเจพ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจฆเฉ€เจ†เจ‚ เจ˜เจŸเจจเจพเจตเจพเจ‚ เจจเจนเฉ€เจ‚ เจนเจจเฅค

    เจฎเฉŒเจœเฉ‚เจฆเจพ เจฐเฉ€เจฒเฉ€เจœเจผ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ•เจฟเจธเจฎ โ€œ[T; N]" (เจŸเจพเจˆเจช T เจ…เจคเฉ‡ เจ†เจ•เจพเจฐ N) เจ•เจฟเจธเฉ‡ เจตเฉ€ เจชเฉ‚เจฐเจจ เจ…เฉฐเจ•, เจฌเฉ‚เจฒเฉ€เจ…เจจ เจ…เจคเฉ‡ เจ…เฉฑเจ–เจฐ เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ…เจฎเฉ‚เจฐเจค เจ•เจฟเจธเจฎ เจ…เจคเฉ‡ เจ†เจ•เจพเจฐ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆ (เจธเจŸเฉเจฐเจ•เจšเจฐ เจ…เจคเฉ‡ เจเจจเจฎ เจ•เจฟเจธเจฎเจพเจ‚ เจ…เจœเฉ‡ เจธเจฎเจฐเจฅเจฟเจค เจจเจนเฉ€เจ‚ เจนเจจ)เฅค เจธเจฅเจฟเจฐ เจœเฉˆเจจเจฐเจฟเจ• เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจจเฉ‚เฉฐ เจฌเจนเฉเจค เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจ; เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจเจฐเฉ‡ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ เจœเฉ‹ เจ•เจฟเจธเฉ‡ เจ–เจพเจธ เจ•เจฟเจธเจฎ เจ…เจคเฉ‡ เจ†เจ•เจพเจฐ เจจเจพเจฒ เจจเจนเฉ€เจ‚ เจœเฉเฉœเจฟเจ† เจนเฉ‹เจ‡เจ† เจนเฉˆ, เจคเฉเจธเฉ€เจ‚ เจจเจฟเจธเจผเจšเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹: struct เจเจฐเฉ‡ { // ^^^^^^^^^^^^^^^^^^^^ เจ‡เฉฑเจ• เจธเจฅเจฟเจฐ เจ†เจฎ เจธเฉ‚เจšเฉ€ เจฆเฉ€ เจชเจฐเจฟเจญเจพเจธเจผเจพ: [เจŸเฉ€; เจฒเฉฐเจฌเจพเจˆ] // ^^^^^^ เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ }

    เจœเจฆเฉ‹เจ‚ เจ…เจธเจฒ เจตเจฟเฉฑเจš "เจเจฐเฉ‡" เจฆเฉ€ เจ‡เจธ เจชเจฐเจฟเจญเจพเจธเจผเจพ เจจเจพเจฒ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ ยป เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจเจฐเฉ‡ เจฆเจพ เจฎเฉ‹เจจเฉ‹เจฎเฉ‹เจฐเจซเจฟเจ• เจธเฉฐเจธเจ•เจฐเจฃ เจคเจฟเจ†เจฐ เจ•เจฐเฉ‡เจ—เจพ: struct เจเจฐเฉ‡ {เจธเฉ‚เจšเฉ€: [u8; 32] }

  • std::array::IntoIter API, เจธเจฅเจฟเจฐ เจœเฉˆเจจเจฐเจฟเจ•เจธ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡, เจธเจฅเจฟเจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจœเจฟเจธ เจจเจพเจฒ เจคเฉเจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจเจฐเฉ‡ เจฒเจˆ เจฎเฉเฉฑเจฒ เจฆเฉเจ†เจฐเจพ เจฆเฉเจนเจฐเจพเจ“ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹: fn main() { let array = [1, 2, 3, 4, 5] ; // เจชเจนเจฟเจฒเจพเจ‚, เจ•เจฟเจธเฉ‡ เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจฆเฉเจนเจฐเจพเจ‰เจฃ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ array.iter().copied() { println!("{}", item) เจตเจฟเฉฑเจš เจ†เจˆเจŸเจฎ เจฒเจˆ .iter() เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจจเจพ เจชเฉˆเจ‚เจฆเจพ เจธเฉ€; } // เจนเฉเจฃ เจคเฉเจธเฉ€เจ‚ std::array::IntoIter::new(array) { println!("{}", item) เจตเจฟเฉฑเจš เจ†เจˆเจŸเจฎ เจฒเจˆ เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹; } }
  • เจ•เจพเจฐเจ—เฉ‹ เจชเฉˆเจ•เฉ‡เจœ เจฎเฉˆเจจเฉ‡เจœเจฐ เจนเฉเจฃ Cargo.toml เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเจตเฉ‡เจ‚ เจฐเฉˆเจœเจผเฉ‹เจฒเจตเจฐ เจซเฉ€เจฒเจก เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเจฟเจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจฐเฉˆเจœเจผเฉ‹เจฒเจตเจฐ เจฆเฉ‡ เจฆเฉ‚เจœเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจจเฉ‚เฉฐ เจธเจฎเจฐเฉฑเจฅ เจ•เจฐเจจ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจกเจฟเจซเจพเจˆเจจเจฐ เจฆเจพ เจจเจตเจพเจ‚ เจธเฉฐเจธเจ•เจฐเจฃ "[เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ]" เจญเจพเจ— เจตเจฟเฉฑเจš เจธเฉ‚เจšเฉ€เจฌเฉฑเจง เจจเจฟเจฐเจญเจฐเจคเจพ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ เจคเฉ‹เจ‚ เจฌเจšเจฆเจพ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจ‡เจน เจ…เจฃเจ‰เจšเจฟเจค เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเจฟเจฐเจญเจฐเจคเจพ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจœเฉ‹ เจฌเจฟเจฒเจก เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจ…เจคเฉ‡ เจฎเฉˆเจ•เจฐเฉ‹เจœเจผ เจตเจฟเฉฑเจš เจ•เฉเจ เจฎเจฟเจ†เจฐเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจฆเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจชเจฐ เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจ—เฉˆเจฐ-เจฎเจฟเจ†เจฐเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจšเฉฑเจฒเจฃเจฏเฉ‹เจ— เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš .

    เจนเฉเจฃ เจคเฉฑเจ•, เจจเจฟเจฐเจญเจฐเจคเจพ เจ—เฉเจฐเจพเจซ เจตเจฟเฉฑเจš เจ•เจˆ เจตเจพเจฐ เจœเจผเจฟเจ•เจฐ เจ•เฉ€เจคเฉ‡ เจชเฉˆเจ•เฉ‡เจœ เจฆเฉ€เจ†เจ‚ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจธเฉ€เฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจœเฉ‡เจ•เจฐ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเจฟเจฐเจญเจฐเจคเจพ foo เจธเจผเจพเจฎเจฒ เจนเฉˆ เจœเฉ‹ เจธเจฎเจฐเฉฑเจฅเจพ A เจ…เจคเฉ‡ B เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจน เจชเฉˆเจ•เฉ‡เจœ เจฆเฉ‚เจœเฉ‡ เจชเฉˆเจ•เฉ‡เจœ เจฌเจพเจฐ เจ…เจคเฉ‡ baz เจตเจฟเฉฑเจš เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจญเจพเจตเฉ‡เจ‚ เจฌเจพเจฐ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ A เจตเจพเจฒเฉ‡ foo 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ baz เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ B เจตเจพเจฒเฉ‡ foo 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ, เจซเจฟเจฐ เจจเจคเฉ€เจœเจพ เจ‡เจน เจนเฉ‹เจตเฉ‡เจ—เจพ เจ•เจฟ เจ•เจพเจฐเจ—เฉ‹ เจ‡เจนเจจเจพเจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœ เจฆเฉ‡เจตเฉ‡เจ—เจพ เจ…เจคเฉ‡ foo เจจเฉ‚เฉฐ A เจ…เจคเฉ‡ B เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ‡ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เจฐเฉ‡เจ—เจพเฅค เจ‡เจธ เจตเจฟเจงเฉ€ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ เจœเฉ‹ เจ•เจฟ เจ•เฉเจ เจจเจฟเจฐเจญเจฐเจคเจพ เจŸเจพเจฐเจ—เฉ‡เจŸ เจธเจฟเจธเจŸเจฎ เจจเจพเจฒ เจ…เจธเฉฐเจ—เจค เจนเฉ‹เจฃ เจ•เจพเจฐเจจ เจธเจฎเจฐเฉฑเจฅ เจนเฉˆ เจœเจฟเจธ เจฒเจˆ เจจเจคเฉ€เจœเจพ เจฌเจฟเจฒเจก เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ "#![no_std]" เจจเจพเจฒ เจฌเจฃเฉ‡ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเฉ‡เจฌเจฒ เจตเจฟเฉฑเจš "#![no_std]" เจฆเฉ‡ เจจเจพเจฒ foo เจฆเจพ เจตเจฐเจœเจจ เจตเจฐเจคเจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡ เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚ เจฌเจฟเจฒเจก เจ‡เจจ เจฌเจฟเจฒเจก เจฆเฉŒเจฐเจพเจจ "std" เจจเจพเจฒ foo เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹เฅค เจฐเฉเจชเจ เจœเจฆเฉ‹เจ‚ Cargo.toml เจตเจฟเฉฑเจš solver="2" เจจเฉ‚เฉฐ เจจเจฟเจธเจผเจšเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจชเฉˆเจ•เฉ‡เจœ เจฎเฉˆเจจเฉ‡เจœเจฐ เจนเฉเจฃ dev, เจนเฉ‹เจธเจŸ เจ…เจคเฉ‡ เจŸเจพเจฐเจ—เฉ‡เจŸ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ– เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ‡เจธ เจ…เจชเจตเจพเจฆ เจจเฉ‚เฉฐ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจธเฉฐเจญเจพเจฒเจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ‡เจ—เจพเฅค

  • เจ•เจพเจฐเจ—เฉ‹ เจธเจชเจฒเจฟเจŸ-เจกเฉ€เจฌเจ—เจฟเจจเจซเฉ‹ เจตเจฟเจ•เจฒเจช เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเฉ‹ โ€œ[เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ]โ€ เจญเจพเจ— เจตเจฟเฉฑเจš เจธเฉˆเฉฑเจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ…เจคเฉ‡ rustc เจตเจฟเฉฑเจš เจธเฉฐเจฌเฉฐเจงเจฟเจค เจซเจฒเฉˆเจ— โ€œ-Csplit-debuginfo=unpackedโ€, เจกเฉ€เจฌเจ—เจฟเฉฐเจ— เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจชเฉ‡เจธเจผเจ•เจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจฒเฉ‹เฉœ เจจเฉ‚เฉฐ เจ–เจคเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค dsymutil เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ macOS 'เจคเฉ‡ เจกเฉ€เจฌเฉฑเจ—เจฟเฉฐเจ— เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเจพเจฒ เจฌเจฟเจฒเจก เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจคเฉŒเจฐ 'เจคเฉ‡ เจคเฉ‡เจœเจผ เจ•เจฐเจฆเจพ เจนเฉˆเฅค
  • เจธเจฅเจฟเจฐ makos "ptr::addr_of!" เจ…เจคเฉ‡ โ€œptr::addr_of_mut!โ€, เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ…เจฒเจพเจˆเจจ เจ–เฉ‡เจคเจฐเจพเจ‚ เจฒเจˆ เจ•เฉฑเจšเฉ‡ เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค std::ptr เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹; #[repr(packed)] struct Packed { f1: u8, f2: u16, } let packed = Packed { f1: 1, f2: 2 }; // &packed.f2 เจ‡เฉฑเจ• เจ…เจฃ-เจ…เจฒเจพเจˆเจจ เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจฌเจฃเจพเจตเฉ‡เจ—เจพ เจœเฉ‹ เจ…เจฃ-เจชเฉเจฐเจญเจพเจธเจผเจฟเจค เจตเจฟเจตเจนเจพเจฐ เจตเฉฑเจฒ เจฒเฉˆ เจœเจพเจ‚เจฆเจพ เจนเฉˆ raw_f2 = ptr::addr_of!(packed.f2); assert_eq!(เจ…เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค { raw_f2.read_unaligned() }, 2);
  • API เจฆเฉ‡ เจ‡เฉฑเจ• เจจเจตเฉ‡เจ‚ เจนเจฟเฉฑเจธเฉ‡ เจจเฉ‚เฉฐ เจธเจฅเจฟเจฐ เจธเจผเฉเจฐเฉ‡เจฃเฉ€ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒ เจ•เจฐ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€เจ†เจ‚ เจตเจฟเจงเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเจฅเจฟเจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ:
    • Arc::decrement_strong_count
    • Arc::increment_strong_count
    • เจ‡เฉฑเจ• เจตเจพเจฐ::call_one_force
    • เจฆเฉ‡เจ–เจฃเจฏเฉ‹เจ—::next_if_eq
    • Peekable::next_if
    • เจ–เฉ‹เจœเฉ‹::stream_position
    • เจเจฐเฉ‡::IntoIter
    • panic::panic_any
    • ptr::addr_of!
    • ptr::addr_of_mut!
    • เจŸเฉเจ•เฉœเจพ::เจซเจฟเจฒ_เจตเจฟเจฅ
    • เจŸเฉเจ•เฉœเจพ::split_inclusive_mut
    • slice::split_inclusive
    • slice::strip_prefix
    • เจŸเฉเจ•เฉœเจพ::เจธเจŸเฉเจฐเจฟเจช_เจธเจซเจฟเจ•เจธ
    • str::split_inclusive
    • เจธเจฟเฉฐเจ•::เจตเจจเจธเจŸเฉ‡เจŸ
    • เจ•เฉฐเจฎ::เจœเจพเจ—เฉ‹
  • i386-unknown-linux-gnu, i486-unknown-linux-gnu, aarch64_be-unknown-linux-gnu, aarch64-unknown-linux-gnu_ilp32 เจ…เจคเฉ‡ aarch64_be-unknown-linux-gnu_ilp32 เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎเจพเจ‚ เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจฆเจพ เจคเฉ€เจœเจพ เจชเฉฑเจงเจฐ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค . เจคเฉ€เจœเฉ‡ เจชเฉฑเจงเจฐ เจตเจฟเฉฑเจš เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจธเจนเจพเจ‡เจคเจพ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจชเจฐ เจธเจตเฉˆเจšเจฒเจฟเจค เจœเจพเจ‚เจš เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚, เจ…เจงเจฟเจ•เจพเจฐเจค เจฌเจฟเจฒเจกเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เจฐเจจเจพ, เจœเจพเจ‚ เจ‡เจน เจœเจพเจ‚เจš เจ•เจฐเจจเจพ เจ•เจฟ เจ•เฉ€ เจ•เฉ‹เจก เจฌเจฃเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจธเจฐเฉ‹เจค: opennet.ru

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹