# Rust 1.94.0: array_windows 안정화, 설정 파일의 include 지원, TOML 1.1 전환
Rust 1.94.0이 출시되어 개발자들을 위한 여러 중요한 개선 사항을 가져왔습니다. 주요 신기능으로는 고정 길이 배열을 순회하는 array_windows 메서드, Cargo 설정 파일의 include 키 지원, 그리고 TOML 1.1로의 전환이 있습니다. 이러한 변경 사항이 작업을 어떻게 단순화할지 알아보겠습니다.
array_windows 메서드: 고정 길이 윈도우 작업
Rust의 새 버전에서 슬라이스의 array_windows 메서드가 안정화되었습니다. 이는 슬라이스를 고정 길이 윈도우로 순회할 수 있게 하며, 수동 인덱싱과 경계 확인이 필요 없게 합니다. 동적 길이 슬라이스(&[T])를 반환하는 windows 메서드와 달리, array_windows는 고정 길이 배열 참조(&[T; N])를 반환합니다.
특히 알려진 윈도우 크기로 연속 요소를 처리해야 하는 작업에서 매우 유용합니다. 예를 들어, 문자열에서 ABBA 패턴(두 개의 다른 문자 뒤에 그 역순)을 찾으려면 다음 코드를 사용할 수 있습니다:
fn has_abba(s: &str) -> bool {
s.as_bytes()
.array_windows()
.any(|[a1, b1, b2, a2]| (a1 != b1) && (a1 == a2) && (b1 == b2))
}
컴파일러가 클로저의 구조 분해 패턴에서 윈도우 길이(4)를 자동으로 유추합니다. windows(4)를 사용하면 인덱스를 수동으로 확인해야 하므로 덜 안전하고 읽기 어렵습니다.
include 키를 사용한 Cargo 설정 관리
Cargo가 이제 설정 파일(.cargo/config.toml)에서 include 키를 지원합니다. 이 기능은 프로젝트와 환경 간에 설정을 구성하고 공유하며 관리하는 것을 간편하게 합니다.
include 키는 경로 배열이거나 추가 옵션이 포함된 인라인 테이블일 수 있습니다. 예:
# 경로 배열
include = [
"frodo.toml",
"samwise.toml",
]
# 세밀한 조정을 위한 인라인 테이블
include = [
{ path = "required.toml" },
{ path = "optional.toml", optional = true },
]
optional = true 옵션은 일부 환경(예: 개발자 로컬 머신)에서 파일이 없을 수 있음을 지정할 수 있게 해 설정 유연성을 높여줍니다. 별도의 브랜치가 필요 없게 됩니다.
TOML 1.1로의 전환: 어떤 점이 바뀌었나
Cargo가 이제 매니페스트와 설정 파일에서 TOML 1.1을 완전히 지원합니다. 주요 편의 개선 사항은 다음과 같습니다:
- 인라인 테이블을 여러 줄에 걸쳐 배치하고 후행 쉼표 사용 가능.
- 문자열의 새 이스케이프 시퀀스:
\xHH와\e. - 시간 표현에서 초 부분 선택적(기본값: 0).
다중 줄 인라인 테이블 예시:
serde = {
version = "1.0",
features = ["derive"],
}
주의: Cargo.toml에서 새로운 TOML 1.1 기능을 사용하면 최소 지원 Rust 버전(MSRV)이 새 Cargo 파서를 요구하는 버전으로 올라갑니다. 하지만 크레이트를 게시할 때 Cargo가 자동으로 이전 파서와 호환되는 형식으로 매니페스트를 다시 작성합니다. 이렇게 하면 크레이트 사용자에게 이전 Rust 버전 지원을 유지할 수 있습니다.
안정화된 API: 전체 목록
1.94.0 릴리스에서 개발 중이던 많은 API가 안정화되었습니다. 주요 항목은 다음과 같습니다:
- 슬라이스 메서드:
<[T]>::array_windows,<[T]>::element_offset LazyCell메서드:get,get_mut,force_mutLazyLock메서드:get,get_mut,force_mut- 변환:
impl TryFrom<char> for usize Peekable메서드:next_if_map,next_if_map_mut- x86(AVX-512 FP16) 및 AArch64(NEON FP16)용 내장 함수(불안정한
f16타입에 의존하지 않는 것) - 수학 상수:
f32::consts::EULER_GAMMA,f64::consts::EULER_GAMMA,f32::consts::GOLDEN_RATIO,f64::consts::GOLDEN_RATIO f32::mul_add및f64::mul_add메서드가 이제const컨텍스트에서 안정화
이러한 변경으로 표준 라이브러리의 기능이 확장되고 코드가 더 표현력 있게 됩니다.
개발자를 위한 주요 요약
- 윈도우 처리 간소화:
array_windows메서드로 고정 윈도우 작업 시 보일러플레이트 코드가 줄어들어 안전성과 가독성이 향상됩니다. - 설정 유연성: Cargo의
include키로 모듈식 설정 조립이 가능해 대형 프로젝트와 팀에서 특히 유용합니다. - TOML 1.1 호환성: 새로운 TOML 기능으로 설정 파일이 더 편리해지지만
Cargo.toml사용 시 MSRV를 유의하세요. - 표준 라이브러리 확장: 수학 상수와 반복자 메서드를 포함한 새 API 안정화로 일상 작업이 간단해집니다.
이러한 개선 사항을 활용하기 위해 모든 개발자에게 Rust 1.94.0으로 업데이트하는 것을 권장합니다. rustup update stable 명령어를 사용하세요.
— Editorial Team
아직 댓글이 없습니다.