Rust 팀은 언어의 새로운 버전인 1.35를 발표하게 되어 기쁩니다. Rust는 강력하고 효율적인 프로그램을 작성할 수 있는 프로그래밍 언어입니다.
rustup을 통해 이미 Rust가 설치되어 있다면 다음 명령으로 업데이트할 수 있습니다.
$ rustup 업데이트 안정적
업데이트의 주요 내용은 Box에 대한 Fn, FnOnce, FnMut 클로저 특성 구현입니다. , 상자 , 상자 각각. 안전하지 않은 함수에 대한 포인터에 클로저를 캐스팅하는 기능이 추가되어, 이제 인수 없이 dbg!() 매크로를 호출할 수 있으며 표준 라이브러리가 안정화되었습니다.
자세한 내용은 다음과 같습니다.
- 새 버전에는 Box에 대한 Fn, FnOnce, FnMut 특성 구현이 추가되었습니다. , 상자 , 상자 각각.
이제 이 코드가 작동합니다.
fn foo(x: 박스 u8>) -> 벡터 {
vec![1, 2, 3, 4].into_iter().map(x).수집()
}또한 Box에서 직접 폐쇄를 호출할 수 있습니다. :
fn foo(x: 박스 ) {
엑스()
} - 이제 클로저를 안전하지 않은 fn에 대한 포인터로 캐스팅할 수 있습니다.
현재 이 코드는 유효합니다:
/// 안전성 불변성은 전달된 `unsafe fn` 포인터의 안전성 불변성입니다.
안전하지 않은 fn call_unsafe_fn_ptr(f: 안전하지 않은 fn()) {
NS()
}fn 메인() {
// 안전성: 불변성이 없습니다.
// 클로저는 안전하지 않은 작업을 수행하지 못하도록 정적으로 방지합니다.
안전하지 않은 {
call_unsafe_fn_ptr(|| {
dbg!();
});
}
} - 인수 없이 dbg!() 매크로를 호출하는 기능을 추가했습니다.
이 매크로에 어떤 표현식을 전달하면 매크로는 결과를 출력합니다. 예:
fn 메인() {
mut x = 0로 둡니다.dbg!(x == 1)이면
x += 1;
}dbg!(x);
}이 코드를 실행하면 다음이 표시됩니다.
[src/main.rs:4] x == 1 = 거짓
[src/main.rs:8] x = 0이제 이렇게 쓸 수 있습니다.
fn 메인() {
조건을 참(true)으로 하세요.if 조건 {
dbg!();
}
}이 코드를 실행하면 다음이 표시됩니다.
[src/main.rs:5]
- 표준 라이브러리의 일부가 안정화되었습니다.
- f32 및 f64에 대한 새로운 방법:
- f32::복사사인
- f64::복사사인
실제로 이 함수는 다른 숫자의 부호를 복사합니다. 예:
fn 메인() {
주장_eq!(3.5_f32.copysign(-0.42), -3.5);
} - 범위 유형에 대한 새로운 메서드 추가
- 범위::포함
- 범위From::포함
- 범위::포함
- 범위 포함::포함
- 범위 포함::포함
이러한 방법을 사용하면 특정 값이 시퀀스에 있는지 쉽게 확인할 수 있습니다.
fn 메인() {
if (0..=10).contains(&5) {
println!("0부터 10까지에는 5가 포함됩니다.");
}
} - 안정화된 API의 전체 목록을 확인할 수 있습니다. 여기에
- f32 및 f64에 대한 새로운 방법:
- 이 업데이트에서는 Clippy(코드의 오류를 검사하는 프로그램)에 drop_bounds에 대한 새로운 검사 기능이 추가되었습니다. 이 검사는 제약 조건 T: Drop을 설정할 때 트리거됩니다. 일반 함수의 경우:
fn 푸 (x: T) {}T: Drop 제한을 두는 것은 u8과 같은 일부 유형을 즉시 제외하기 때문에 가장 자주 실수입니다. (이에 대해 자세히 읽을 수 있습니다. 여기에)
- Cargo(언어 패키지 관리자)에 많은 개선 및 수정 사항이 있습니다. 전체 변경 목록
출처 : linux.org.ru
