홈으로 돌아가기

Rust 1.94.0: 새로운 메서드와 Cargo 구성 | IT 리뷰

Rust 1.94.0 릴리스가 고정 길이 윈도우 처리를 위한 array_windows 메서드 안정화, Cargo 구성 파일의 include 키 지원, TOML 1.1로의 전환을 포함합니다. 이러한 변경은 안전하고 읽기 쉬운 코드 작성과 유연한 프로젝트 구성을 간소화합니다. 모든 Rust 개발자에게 업데이트 권장.

Rust 1.94.0: 새로운 기능이 코드를 어떻게 개선할까? 릴리스 세부 정보
Advertisement 728x90

# 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 패턴(두 개의 다른 문자 뒤에 그 역순)을 찾으려면 다음 코드를 사용할 수 있습니다:

Google AdInline article slot
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 키는 경로 배열이거나 추가 옵션이 포함된 인라인 테이블일 수 있습니다. 예:

Google AdInline article slot
# 경로 배열
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).

다중 줄 인라인 테이블 예시:

Google AdInline article slot
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_mut
  • LazyLock 메서드: 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_addf64::mul_add 메서드가 이제 const 컨텍스트에서 안정화

이러한 변경으로 표준 라이브러리의 기능이 확장되고 코드가 더 표현력 있게 됩니다.

개발자를 위한 주요 요약

  • 윈도우 처리 간소화: array_windows 메서드로 고정 윈도우 작업 시 보일러플레이트 코드가 줄어들어 안전성과 가독성이 향상됩니다.
  • 설정 유연성: Cargo의 include 키로 모듈식 설정 조립이 가능해 대형 프로젝트와 팀에서 특히 유용합니다.
  • TOML 1.1 호환성: 새로운 TOML 기능으로 설정 파일이 더 편리해지지만 Cargo.toml 사용 시 MSRV를 유의하세요.
  • 표준 라이브러리 확장: 수학 상수와 반복자 메서드를 포함한 새 API 안정화로 일상 작업이 간단해집니다.

이러한 개선 사항을 활용하기 위해 모든 개발자에게 Rust 1.94.0으로 업데이트하는 것을 권장합니다. rustup update stable 명령어를 사용하세요.

— Editorial Team

Advertisement 728x90

다음 읽기