ื ืืืื ืืืืืจืื ืืืืืืืื ืฉื Rust ืืืื ืฉืืืืืช ืืขืช ืื ืืคืืืฆืื ืฉื ืืฆืืืขืื ืืืื ืืคื ื ืืขืืืช ืื ืืืขืืช ืืื ืืคืืืฆืื ืฉื ืืืืจืื ืืจืื ื ืืืื, ืืืื ืืืฉื ืืืืืจ ืืืืจืื ืืืืจ ืฉืืจืืจื, ืืคื ืืืช ืืฆืืืข ืืคืกืืช, ืืจืืืืช ืืืืจ ืืื'. ืื ืื ืืืืืืช ืืคืืชื ืืืคืฆืช ืกืคืจืืืช, ืืืืืช ืืจืืื ืื ืืืื ืชืืืช ืขื ืืื ืืคืจืืืงื.
ืืขืืงืจื
- ืืืืื ืืืืจื ืืื
ืคึผึฐืึธื ืืขืช ืืืฆืืข ืืืจืืช ืืื ืืกืคืจืื ืฉืืืื ืืืกืคืจื ื ืงืืื ืฆืคื. ืืืืืื ืฉืืืืืจ Rust ืืฉืชืืฉ ื-LLVM ืืชืืจ ืงืฆื ืขืืจืคื, ืคืขืืืืช ืืืจืช ืกืื ืืืฆืขื ืืืืฆืขืืช ืืืจืืืช ืงืื ืืื ืืื ืฉื LLVM ืืืืfptoui , ืฉืืฉ ืืื ืชืืื ื ืืืช ืืฉืืขืืชืืช - ืืชื ืืืืช ืื ืืืืืจืช ืื ืืขืจื ืืืชืงืื ืืื ื ืืชืืื ืืกืื ืืืขื. ืืืืืื, ืืืฉืจ ืืืืจืื ืืช ืืขืจื ืืฆืฃ 300 ืขื ืกืื f32 ืืกืื ืืกืคืจ ืฉืื u8, ืืชืืฆืื ืืื ื ื ืืชื ืช ืืืืืื ืืขืฉืืื ืืืฉืชื ืืช ืืืขืจืืืช ืฉืื ืืช. ืืืขืื ืืื ืฉืชืืื ื ืื ืืืคืืขื ืืงืื ืฉืืื ื ืืกืืื ื"ืื ืืืื".ืืื ื-Rust 1.45, ืืืชื ืืืืช ืฉื ืืฆืคืช ืืืื ืืกืื ืืืกืืจืช ืืงืคืื ืืช, ืืคืขืืืช ืืืืจื "ืืื" ืืืืงืช ืืืืฉื ืืืืืฆืช ืืช ืืืจืช ืืขืจื ืืขืจื ืืืงืกืืืื ืื ืืืื ืืืื ืฉื ืกืื ืืืขื (ืืืืืื ืืขืื, ืขืจื ืฉื 300 ืืืืจื ื-255). ืืื ืืืฉืืืช ืืืืงืืช ืืืื, ื ืืชื ืืช ืงืจืืืืช API ื ืืกืคืืช "{f64, f32}::to_int_unchecked", ืืคืืขืืืช ืืืฆื ืื ืืืื.
fn cast(x: f32) -> u8 {
x ืืชืืจ u8
}fn main() {
let too_big = 300.0;
let too_small = -100.0;
let nan = f32::NAN;ืชื x: f32 = 1.0;
let y: u8 = unsafe { x.to_int_unchecked() };println!("ืืืืื_ืืืื = {}", ืฉืืงื ืื(ืืื_ืืืืื)); // ืคืื 255
println!("too_small_casted = {}", cast(too_small)); // ืคืื 0
println!("not_a_number_casted = {}", cast(nan)); // ืคืื 0
} - ืืฉืชืืฉ ืืืืฆื
ืคืงืืืืช ืืืงืจื ืคืจืืฆืืืจืืืืช ืืืืืืื, ืชืื ืืืช ืืืฆืืจืืช ืืืืื ืคืื ืงืฆืื. ืืขืืจ, ืื ื ืืชื ืืื ืืงืจืื ืคืงืืืืช ืืืงืจื ืืืื ืืื ืืงืื, ืืื ืจืง ืืืืงืื ืืกืืืืื ืฉื ืืงืื (ืืงืจืืื ื ืคืจืืช, ืื ืฉืืืจื ืืงืื ืืืจ). ืืจืืืช ืืืจื ืฉืื ื ืืชื ืืงืจืื ืืคืงืืืืช ืืืงืจื, ืืืืื ืืคืื ืงืฆืืืช, ืืืืชื ืืืช ืืืจืืฉืืช ืืื ืืืจืื ืืืกืืจืช ืืืื ืืจื ื ืืขืืืืจืงืื ืืืืืืจืืช ืืฆืืืืช ืฉื Rust. ืืขืืจ, ืืฉืืช ืืืืฉืืช ื ืืกืคืช ืืืืืจืช ืืืคืืื ื- Rocket ืืจืฉื ืืคืขืืช ืชืืื ื ื ืืกืืื ืืช ืืฉื "proc_macro_hygiene", ืฉืืื ื ืืืื ื ืืืจืกืืืช ืืฆืืืืช ืฉื Rust. ืคืื ืงืฆืืื ืืืืช ืื ืืืื ืืช ืืขืช ืืืืืืจืืช ืืฆืืืืช ืฉื ืืฉืคื. - ืืืชืจ ืืืฉืชืืฉ ืืืืืืื ืขื ืกืื "char" ืืื ืืืืืจ ืขื ืขืจืื ืืืื (ops::{Range, RangeFrom, RangeFull, RangeInclusive, RangeTo}):
ืขืืืจ ch in 'a'..='z' {
print!("{}", ch);
}
println!(); // ืืืคืืก "abcdefghijklmnopqrstuvwxyz" - ืืืง ืืืฉ ืฉื ืืืฉืงื API ืืืขืืจ ืืงืืืืจืืืช ืืืฆืืืืช, ืืืื ืืืืฆื
Arc::as_ptr,
BTreeMap::remove_entry,
Rc::as_ptr,
rc::Weak::as_ptr,
rc::ืืืฉ::from_raw,
rc::Weak::into_raw,
str::strip_prefix,
str::strip_suffix,
sync::Weak::as_ptr,
sync::Weak::from_raw,
sync::Weak::into_raw,
char::UNICODE_VERSION,
span::resolved_at,
Span::located_at,
Span::mixed_site,
unix::process::CommandExt::arg0. - ืืืืจ rustc ืืืกืืฃ ืชืืืื ืืขืงืืฃ ืชืืื ืืช ืฉืื ืืช ืฉื ืคืืืคืืจืืช ืืขื ืืืืฆืขืืช ืืื "target-feature", ืืืฉื, "-C target-feature=+avx2,+fma". ืืื ืื ื ืืกืคื ืืืืื ืืืฉืื:
"ืืฉืืจืจ ืืืืืืช ืืืื" ืืืฆืืจืช ืืืืืืช ืฉืืืืช ืืฉืืจืืจ, ืืื ืงืฉืจ ืืืกืืจืืืืืช ืืืืคืื ืืืชืจืกืงืืช; "Embed-bitcode" ืืื ืืฉืืื ืื LLVM bitcode ืืืื ื-rlibs ืฉื ืืฆืจื. ืืืื "Embed-bitcode" ืืืคืขื ืืืจืืจืช ืืืื ื-Cargo ืืื ืืืืขื ืืช ืืื ืืื ืืื ืืฆืจืืืช ืฉืื ืืืืกืง. - ืจืื ืฉืืืฉืืช ืฉื ืชืืืื ืกืืคืงื ืขืืืจ ืืคืืืคืืจืืืช mipsel-sony-psp ื-thumbv7a-uwp-windows-msvc. ืืจืื ืืฉืืืฉืืช ืืืืืช ืชืืืื ืืกืืกืืช, ืื ืืื ืืืืงืืช ืืืืืืืืืช ืืคืจืกืื ืฉื ืืื ืื ืจืฉืืืื.
ืื ืืกืฃ, ื ืืชื ืืฆืืื
ืืืืืจ ืืื ืืจืืฉืื ืืกืืจื ืืืืงืืฉ ืืืืืืช ืืื ืืงืืช ืืืืงืฉืืช ืืชืื ืืช ืืจืื ื ืืืื ืืืคืืชืื ืืขืจืืช ืืคืขืื.
ืืงืืจ: OpenNet.ru