마인드 맵 갤러리 RUST 2판 마스터하기
이것은 RUST 마스터에 대한 마인드 맵입니다. 위의 단계와 제안을 통해 점차적으로 Rust 프로그래밍 기술을 향상시키고 Rust가 제공하는 메모리 안전성과 효율적인 성능을 누릴 수 있습니다.
2024-04-04 15:14:48에 편집됨이것은 (III) 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제에 대한 마인드 맵이며, 주요 함량은 다음을 포함한다 : 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제 (HIF-PHI)는 신장 빈혈의 치료를위한 새로운 소형 분자 경구 약물이다. 1. HIF-PHI 복용량 선택 및 조정. Rosalasstat의 초기 용량, 2. HIF-PHI 사용 중 모니터링, 3. 부작용 및 예방 조치.
이것은 Kuka Industrial Robots의 개발 및 Kuka Industrial Robot의 모션 제어 지침에 대한 마인드 맵입니다. 주요 내용에는 쿠카 산업 로봇의 역사, 쿠카 산업 로봇의 특성, 쿠카 산업 로봇의 응용 분야, 2. 포장 프로세스에서 쿠카 로봇은 빠르고 일관된 포장 작업을 달성하고 포장 효율성을 높이며 인건비를 줄입니다. 2. 인건비 감소 : 자동화는 운영자에 대한 의존성을 줄입니다. 3. 조립 품질 향상 : 정확한 제어는 인간 오류를 줄입니다.
408 컴퓨터 네트워크가 너무 어렵습니까? 두려워하지 마세요! 나는 피를 구토하고 지식 맥락을 명확히하는 데 도움이되는 매우 실용적인 마인드 맵을 분류했습니다. 컨텐츠는 매우 완전합니다. 네트워크 아키텍처에서 응용 프로그램 계층, TCP/IP 프로토콜, 서브넷 디비전 및 기타 핵심 포인트에 이르기까지 원칙을 철저히 이해하는 데 도움이 될 수 있습니다. 📈 명확한 논리 : Mindmas 보물, 당신은 드문 기회가 있습니다. 서둘러! 이 마인드 맵을 사용하여 408 컴퓨터 네트워크의 학습 경로에서 바람과 파도를 타고 성공적으로 해변을 얻으십시오! 도움이 필요한 친구들과 공유해야합니다!
이것은 (III) 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제에 대한 마인드 맵이며, 주요 함량은 다음을 포함한다 : 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제 (HIF-PHI)는 신장 빈혈의 치료를위한 새로운 소형 분자 경구 약물이다. 1. HIF-PHI 복용량 선택 및 조정. Rosalasstat의 초기 용량, 2. HIF-PHI 사용 중 모니터링, 3. 부작용 및 예방 조치.
이것은 Kuka Industrial Robots의 개발 및 Kuka Industrial Robot의 모션 제어 지침에 대한 마인드 맵입니다. 주요 내용에는 쿠카 산업 로봇의 역사, 쿠카 산업 로봇의 특성, 쿠카 산업 로봇의 응용 분야, 2. 포장 프로세스에서 쿠카 로봇은 빠르고 일관된 포장 작업을 달성하고 포장 효율성을 높이며 인건비를 줄입니다. 2. 인건비 감소 : 자동화는 운영자에 대한 의존성을 줄입니다. 3. 조립 품질 향상 : 정확한 제어는 인간 오류를 줄입니다.
408 컴퓨터 네트워크가 너무 어렵습니까? 두려워하지 마세요! 나는 피를 구토하고 지식 맥락을 명확히하는 데 도움이되는 매우 실용적인 마인드 맵을 분류했습니다. 컨텐츠는 매우 완전합니다. 네트워크 아키텍처에서 응용 프로그램 계층, TCP/IP 프로토콜, 서브넷 디비전 및 기타 핵심 포인트에 이르기까지 원칙을 철저히 이해하는 데 도움이 될 수 있습니다. 📈 명확한 논리 : Mindmas 보물, 당신은 드문 기회가 있습니다. 서둘러! 이 마인드 맵을 사용하여 408 컴퓨터 네트워크의 학습 경로에서 바람과 파도를 타고 성공적으로 해변을 얻으십시오! 도움이 필요한 친구들과 공유해야합니다!
RUST에 능숙함
1장 러스트 시작하기
1.1 Rust가 무엇이며 왜 필요한가요?
Rust는 원래 Graydon Hoare가 2006년에 만들고 출시한 빠르고 동시성이 뛰어나며 안전하고 강력한 프로그래밍 언어입니다. 이제는 Mozilla 팀과 많은 오픈 소스 커뮤니티 구성원이 주로 유지 관리하고 개발하는 오픈 소스 언어입니다.
Rust는 GitHub에 오픈 소스 개발 웹사이트를 갖고 있으며, 그 개발 추진력은 매우 빠릅니다. 커뮤니티 중심의 RFC(Request For Comment) 프로세스를 통해 새로운 기능이 언어에 추가됩니다. 이 프로세스에서는 누구나 새로운 기능을 제출한 다음 RFC 문서에서 자세히 설명할 수 있습니다. 그런 다음 RFC에 대한 합의를 구하고 합의에 도달하면 기능이 구현 단계에 들어갑니다.
Rust는 정적이고 강력한 유형의 언어로 존재합니다. 정적 속성은 컴파일러가 컴파일 타임에 모든 관련 변수 및 유형에 대한 정보를 갖고 있으며, 컴파일 타임에 많은 검사를 수행하고 런타임에는 소량의 유형 검사만 남긴다는 것을 의미합니다.
1.2 Rust 툴체인 설치
Rustup.rs
1.3 러스트 소개
1.3.1 기본 유형
부울
이는 true 또는 false일 수 있는 일반적인 부울 값입니다.
숯
성격
정수
이 유형은 비트 폭이 특징입니다. Rust가 지원하는 최대 길이는 128비트입니다.
크기를 조정하다
가변 크기의 부호 있는 정수입니다(크기는 기본 포인터 크기에 따라 다름).
사용하다
가변 크기의 부호 없는 정수(크기는 기본 포인터 크기에 따라 다름)
f32
f32비트 부동 소수점 유형
f64
f64비트 부동 소수점 유형
[티;
고정 크기 배열 T는 요소 유형을 나타내고 N은 요소 수를 나타내며 컴파일 타임에 음수가 아닌 상수입니다.
[티]
임의의 유형을 나타내는 연속 시퀀스 T의 동적인 크기 보기입니다.
str
주로 참조로 사용되는 문자열 슬라이싱, 즉 &str
(티, 유, ..)
유한 시퀀스, T와 U는 서로 다른 유형일 수 있습니다.
fn(i32)->i32
i32 유형 매개변수를 전달받고 i32 유형 매개변수를 반환하는 함수입니다. 함수에도 유형이 있습니다.
1.3.2 변수 선언과 불변성
Rust에서는 변수를 선언할 때 let 키워드를 사용합니다. 변수가 초기화된 후에는 다른 값을 할당할 수 없습니다. 나중에 변수가 다른 변수(동일 유형)를 가리켜야 하는 경우 해당 변수 앞에 mut 키워드를 붙여야 합니다.
1.3.3 기능
함수는 나중에 다른 코드에서 호출할 수 있고 사용자가 복잡성을 관리하는 데 도움이 되는 명명된 엔터티로 많은 명령을 추상화합니다.
fn add(a: u64, b: u64) -> u64 { a b } fn 메인() { a: u64 = 17; b = 3이라고 하자; 결과 = add(a, b); println!("결과 {}", 결과); }
함수는 기본적으로 C/C++의 void 반환 유형과 유사한 ()(단위) 유형의 값인 값을 반환하는 표현식입니다.
1.3.4 폐쇄
Rust는 클로저를 지원합니다. 클로저는 함수와 유사하지만 선언된 환경이나 범위에 대한 더 많은 정보를 가지고 있습니다. 함수에는 연관된 이름이 있지만 클로저의 정의에는 없지만 변수에 할당할 수 있습니다. Rust 유형 추론의 또 다른 장점은 대부분의 경우 유형 없이 클로저에 대한 매개변수를 지정할 수 있다는 것입니다. 이것은 가장 간단한 클로저 "let my_closure = ||();"입니다. 우리는 아무것도 하지 않는 매개변수 없는 클로저를 정의합니다. 그런 다음 함수와 유사한 my_closure()를 통해 이를 호출할 수 있습니다. 두 개의 수직 막대 "||"는 |a, b|와 같은 클로저 매개변수를 저장하는 데 사용됩니다. 때로는 러스트가 올바른 유형을 알아낼 수 없을 때 매개변수 유형(|a:u32|)을 지정하는 것이 필요합니다.
fn 메인() { doubler = |x| 값 = 5로 설정; 두 번 두 번 = doubler(value); println!("{} 두 배는 {}입니다.", value, 두 번); big_closure = |b, c| z = b c라고 하자; z * 두 번 }; some_number = big_closure(1, 2); println!("종료 결과: {}", some_number); }
1.3.5 문자열
문자열은 모든 프로그래밍 언어에서 가장 일반적으로 사용되는 데이터 유형 중 하나입니다. Rust에서는 일반적으로 &str 유형과 문자열 유형의 두 가지 형태로 나타납니다. Rust 문자열은 유효한 UTF-8 인코딩 바이트 시퀀스임이 보장됩니다. C 문자열처럼 NULL로 끝나지 않으며 문자열 사이에 null 바이트를 포함할 수 있습니다.
fn 메인() { 질문하자 = "잘 지내세요?"; 사람을 보자: String = "Bob".to_string(); let namaste = String::from("zd"); println!("{}! {} {}", 나마스테, 질문, 사람); }
위 코드에서 person과 namaste의 유형은 String이고, 질문의 유형은 &str입니다. 문자열 유형의 데이터를 생성하는 방법에는 여러 가지가 있습니다. 문자열 유형 데이터는 힙에 할당됩니다. &str 유형 데이터는 일반적으로 기존 문자열에 대한 포인터입니다. 이러한 문자열은 스택 및 힙에 있거나 컴파일된 개체 코드의 데이터 세그먼트에 있는 문자열일 수 있습니다.
1.3.6 조건 및 판단
Rust의 조건부 판단은 다른 언어의 조건부 판단과 유사합니다. 또한 C와 유사한 if else 구조를 따릅니다.
fn 메인() { Rust_is_awesome = true로 설정하세요. Rust_is_awesome인 경우 { println!("정말입니다"); } 또 다른 { println!("글쎄, Rust를 시도해 보세요!"); } }
Rust에서 if 구문은 명령문이 아니라 표현식입니다. 일반적인 프로그래밍 용어에서 명령문은 값을 반환하지 않지만 표현식은 값을 반환합니다. 이러한 구별은 Rust의 else 조건이 항상 값을 반환한다는 것을 의미합니다. 값은 빈() 유형이거나 실제 값일 수 있습니다. 중괄호의 마지막 줄이 무엇이든, 이는 if else 표현식의 반환 값이 됩니다. if와 else 분기의 반환 유형이 동일해야 한다는 점에 유의하는 것이 중요합니다.
fn 메인() { 결과 = 1 == 2인 경우 { "무엇을 기다립니다?" } 또 다른 { "녹이 의미가 있습니다" }; println!("그거 알아요? {}.", result); }
할당할 값이 if else 표현식에서 반환되면 끝 표시로 세미콜론을 사용해야 합니다. 예를 들어, if가 표현식이라면 let은 끝에 세미콜론이 있어야 하는 명령문입니다.
1.3.7 일치 표현
Rust의 일치 표현식은 매우 간단하고 사용하기 쉽습니다. 이는 기본적으로 C 언어의 간단한 switch 문의 버전과 유사하므로 사용자는 변수 값과 고급 필터링 기능이 있는지 여부를 기반으로 판단할 수 있습니다.
fn req_status() -> u32 { 200 } fn 메인() { let status = req_status(); 일치 상태 { 200 => println!("성공"), 404 => println!("찾을 수 없음"), 기타 => { println!("요청이 코드로 인해 실패했습니다: {}", other); } } }
각 일치 항목은 동일한 유형을 반환해야 합니다. 또한 가능한 모든 일치 값에 대해 정확한 일치를 수행해야 합니다. Rust를 사용하면 모든 변수 포착(여기서는 기타) 또는 _(밑줄)을 사용하여 나머지 가능성을 무시할 수 있습니다.
1.3.8 루프
Rust에서 어떤 일을 반복적으로 수행하는 것은 3가지 구조, 즉 loop, while, for를 사용하여 수행할 수 있습니다. 이러한 모든 구성에는 일반적으로 continue 및 break 키워드가 포함되어 있어 각각 루프를 건너뛰거나 중단할 수 있습니다.
fn 메인() { mut x = 1024로 둡니다. 루프 { x < 0인 경우 { 부서지다; } println!("{}개의 런이 더 남았습니다.", x); x -= 1; } }
Rust에서 루프를 실행하는 또 다른 기능은 루프 코드 블록에 이름을 붙일 수 있는 기능입니다. 이는 두 개 이상의 중첩 루프가 있고 break 문을 직접 포함하는 for 루프뿐만 아니라 그 중 하나에서 중단하려는 상황에서 사용할 수 있습니다.
fn 어리석은_sub(a: i32, b: i32) -> i32 { mut 결과를 0으로 놔두세요; '증분: 루프 { 결과 == a { mut dec = b라고 놔두세요; '감소: 루프 { ifdec==0{ 중단 '증가; } 또 다른 { 결과 -= 1; 12월 -= 1; } } } 또 다른 { 결과 = 1; } } 결과 } fn 메인() { a = 10이라고 하자; b = 4라고 하자; 결과 = 어리석은_sub(a, b); println!("{} 빼기 {}는 {}입니다.", a, b, 결과); }
Rust에는 다른 언어에서 사용되는 for 루프와 유사한 for 키워드도 있지만 구현 방식은 완전히 다릅니다. Rust의 for 루프는 기본적으로 더 강력한 반복 구성(반복자)을 위한 구문적 설탕입니다. 간단히 말해서, Rust의 for 루프는 반복자로 변환될 수 있는 유형에서만 작동합니다. 그러한 유형 중 하나가 Range 유형입니다. 범위 유형은 일련의 숫자를 참조할 수 있습니다.
fn 메인() { print!("정상 범위: "); 나는 0..10 { print!("{},", i); } println!(); print!("포함 범위: "); 0..=10 {의 경우 print!("(),", i); } }
1.3.9 사용자 정의 데이터 유형
사용자 정의 유형은 사용자가 정의한 유형입니다. 사용자 정의 유형은 여러 유형으로 구성될 수 있습니다. 기본 유형을 둘러싼 래퍼이거나 여러 사용자 정의 유형의 조합일 수 있습니다. 구조체, 열거형, 공용체(구조체, 열거형, 공용체라고도 함)의 세 가지 형식이 있습니다. 이를 통해 데이터를 더 쉽게 표현할 수 있습니다. 사용자 정의 유형의 명명 규칙은 CamelCase를 따릅니다.
구조
Rust에는 세 가지 형태의 구조체 선언이 있습니다. 이들 중 가장 간단한 것은 struct 키워드와 이름, 세미콜론으로 끝나는 단위 구조체입니다.
구조체 더미; fn 메인() { 값 = 더미로 둡니다. }
두 번째 구조 형태는 연관된 데이터를 갖는 튜플 구조체입니다. 이러한 각 필드는 이름이 지정되지 않지만 정의에서의 해당 위치를 기준으로 참조됩니다.
구조체 색상(u8, u8, u8); fn 메인() { 흰색 = 색상(255, 255, 255); 빨간색 = 흰색.0이라고 가정합니다. 녹색 = 흰색.1로 설정합니다. 파란색 = 흰색.2로 둡니다. println!("빨간색 값: {}", red); 주황색 = Color(255, 165, 0); Color(r, g, b) = 주황색이라고 둡니다. println!("R: {}, G: {}, B: {} (주황색)", r, g, b); Color(r, _, b) = 주황색으로 둡니다. }
튜플 구조는 속성이 5개 미만인 데이터를 모델링할 때 이상적입니다. 이 이외의 선택은 코드 가독성과 추론을 방해합니다. 3개 이상의 필드가 있는 데이터 유형의 경우 C와 유사한 언어를 사용하여 구조를 구성합니다. 이는 세 번째 형식이자 가장 일반적으로 사용되는 형식입니다.
구조체 플레이어 { 이름: 문자열, 아이큐: u8, 친구: u8, 점수: u16 } fnump_player_score(mut 플레이어: 플레이어, 점수: u16) { player.score = 점수; println!("업데이트된 플레이어 통계:"); } fn 메인() { let name = "앨리스".to_string(); 플레이어 = 플레이어 { 이름, 아이큐: 171, 친구: 134, 점수: 1129 }; ump_player_score(플레이어, 120); }
낱낱이 세다
열거형은 다양한 유형의 사물을 모델링해야 할 때 이를 수행하는 좋은 방법입니다. 열거형 키워드 뒤에 열거형 이름과 중괄호 쌍을 사용하여 생성됩니다. 중괄호 안에는 가능한 모든 유형, 즉 변형을 작성할 수 있습니다. 이러한 변형은 데이터가 있거나 없이 정의될 수 있으며 포함된 데이터는 모든 원거리 유형, 구조, 튜플 구조 또는 열거형 유형일 수 있습니다.
열거형 방향 { N, 이자형, 에스, 여 } 열거형 PlayerAction { 이동하다 { 방향: 방향, 속도: u8 }, 기다리다, 공격(방향) } fn 메인() { 시뮬레이션된_player_action = PlayerAction::Move { 방향: 방향::N, 속도: 2, }; Simulated_player_action {와 일치 PlayerAction::Wait => println!("플레이어가 기다리고 싶어합니다."), PlayerAction::Move { 방향, 속도 } => { println!("플레이어가 {} 속도로 {:?} 방향으로 이동하려고 합니다.", 방향, 속도) } PlayerAction::공격(방향) => { println!("플레이어가 {:?} 방향을 확인하려고 합니다.", 방향) } }; }
1.3.10 유형에 대한 함수 및 메소드
구조체의 impl 블록
생성자와 유사한 함수와 getter 및 setter 메서드라는 두 가지 메커니즘을 사용하여 정의된 구조에 동작을 추가할 수 있습니다.
구조체 플레이어 { 이름: 문자열, 아이큐: u8, 친구: u8 } 임플리 플레이어 { fn with_name(이름: &str) -> 플레이어 { 플레이어 { 이름: name.to_string(), 아이큐: 100, 친구: 100 } } fn get_friends(&self) -> u8 { 자기.친구 } fn 친구 설정(&mut self, count: u8) { self.friends = 개수; } } fn 메인() { let mut player = Player::with_name("Dave"); player.set_friends(23); println!("{}의 친구 수: {}", player.name, player.get_friends()); let _ = Player::get_friends(&player); }
연관된 메소드: 이 메소드에는 첫 번째 매개변수로 self 유형이 없습니다. 객체 지향 프로그래밍 언어의 정적 메서드와 유사합니다. 이러한 메서드는 유형 자체에서 호출 가능하며 호출할 유형의 인스턴스가 필요하지 않습니다. 연관된 메소드는 메소드 이름 앞에 구조 이름과 이중 콜론을 추가하여 호출됩니다.
인스턴스 메소드: self를 첫 번째 외부 매개변수로 사용하는 함수입니다. 여기서 self는 Python의 self와 유사하며 메서드를 구현하는 인스턴스를 가리킵니다.
impl 블록과 열거형
열거형은 상태 머신에서 널리 사용되며 일치 표현식과 함께 사용하면 상태 전환 코드를 매우 간결하게 만들 수 있습니다. 또한 사용자 정의 오류 유형을 모델링하는 데에도 사용할 수 있습니다.
열거형 결제 모드 { 직불, 신용 거래, 페이팔 } fn pay_by_credit(amt: u64) { println!("{}의 크레딧 결제를 처리하는 중", amt); } fn pay_by_debit(amt: u64) { println!("{}의 직불 결제를 처리하는 중", amt); } fn paypal_redirect(amt: u64) { println!("금액: {}에 대해 페이팔로 리디렉션 중입니다.", amt); } impl 결제 모드 { fn pay(&self, 금액: u64) { 일치 { PaymentMode::Debit => pay_by_debit(금액), PaymentMode::Credit => pay_by_credit(금액), PaymentMode::Paypal => paypal_redirect(금액) } } } fn get_saved_지불_모드() -> 지불 모드 { 결제 모드::직불 } fn 메인() { let Payment_mode = get_saved_지불_모드(); Payment_mode.pay(512); }
1.3.11 모듈, 가져오기 및 사용 문
프로그래밍 언어는 복잡성을 관리하기 위해 큰 코드 블록을 여러 파일로 분할하는 방법을 제공하는 경우가 많습니다. Java는 각 .java 파일이 공개 클래스라는 규칙을 따르며 C는 헤더 파일과 include 문을 제공합니다. Rust는 모듈 메커니즘을 제공합니다. 모듈은 Rust 프로그램에서 코드의 이름을 지정하고 구성하는 방법입니다.
모든 Rust 프로그램에는 루트 모듈이 필요합니다. 실행 파일의 경우 일반적으로 main.rs 파일이고, 라이브러리의 경우 일반적으로 lib.rs 파일입니다.
모듈은 다른 모듈 내부에서 선언되거나 파일 및 디렉터리로 구성될 수 있습니다.
컴파일러가 모듈을 인식하려면 mod 선언이라는 키워드를 사용해야 합니다. 루트 모듈에서는 모듈 이름 앞에 use 키워드를 사용해야 합니다. 이는 요소를 범위로 가져오는 것을 의미합니다.
모듈에 정의된 요소는 기본적으로 비공개이며 키워드 pub를 사용하여 호출자에게 노출되어야 합니다.
1.3.12 수집
정렬
배열은 고정된 길이를 가지며 동일한 유형의 요소를 저장할 수 있습니다. [T, N]으로 표시됩니다. 여기서 T는 모든 유형을 나타내고 N은 배열 요소의 수를 나타냅니다. 배열의 크기는 변수로 나타낼 수 없으며 usize의 리터럴 값이어야 합니다.
튜플
프로젝트 목록
키/값 쌍
일부분
1.3.13 반복자
하위 주제
하위 주제
하위 주제
1.4 캐릭터 카운터 개선
1.5 요약
2장 Cargo를 사용하여 프로젝트 관리하기
2.1 패키지 관리자
2.2 모듈
2.2.1 중첩 모듈
2.2.2 파일을 모듈로 사용하기
2.2.3 디렉토리를 모듈로 사용하기
2.3 화물과 도서관
2.3.1 새로운 Cargo 프로젝트 생성
2.3.2 화물과 의존성
2.3.3 Cargo를 사용하여 테스트 실행
2.3.4 Cargo를 사용하여 예제 실행
2.3.5 화물작업공간
2.4 화물 도구 확장
2.4.1 하위 명령 및 Cargo 설치
2.4.2 Clippy를 사용하여 코드 형식 지정
2.4.3 Cargo.toml 매니페스트 파일 소개
2.5 Rust 개발 환경 설정
2.6 Cargo를 사용하여 imgtool 프로그램 빌드
2.7 요약
3장 테스트, 문서화, 벤치마킹
3.1 테스트 목적
3.2 테스트 구성
3.3 단위 테스트
3.3.1 첫 번째 단위 테스트
3.3.2 테스트 실행
3.3.3 테스트 코드 분리
3.3.4 고장 테스트
3..3.5 테스트 무시
3.4 통합 테스트
3.4.1 1차 통합 테스트
3.4.2 공통코드 공유
3.5 문서화
3.5.1 문서 작성
3.5.2 문서 생성 및 보기
3.5.3 호스팅된 문서
3.5.4 문서 속성
3.5.5 문서화된 테스트
3.6 벤치마크
3.6.1 내장된 마이크로 벤치마크 도구
3.6.2 Rust의 안정 버전 벤치마킹
3.7 소프트웨어 패키지 작성 및 테스트 - 논리 게이트 시뮬레이터
3.8 CI 통합 테스트 및 Travis CI
3.9 요약
4장 유형, 제네릭 및 특성
4.1 유형 시스템과 그 중요성
4.2 제네릭
4.2.1 제네릭 생성#
4.2.2 일반 구현
4.2.3 일반 응용 프로그램
4.3 동작을 추상화하기 위해 기능을 사용하기
4.3.1 특징
4.3.2 다양한 형태의 기능
4.4 패키지 일반 기능 사용 - 기능 간격
4.4.1 유형의 특성 간격
4.4.2 일반 함수 및 암시적 코드 블록의 특성 간격
4.4.3 " " 기능 조합을 사용하여 간격 형성
4.4.4 특징 간격 및 암시적 특징 구문
4.5 표준 라이브러리 기능 소개
4.6 진정한 다형성을 달성하기 위해 특성 개체 사용
4.6.1 배포
4.6.2 특징적인 객체
4.7 요약
5장 메모리 관리와 보안
5.1 프로그램과 메모리
5.2 프로그램이 메모리를 사용하는 방법
5.3 메모리 관리 및 분류
5.4 메모리 할당 소개
5.4.1 스택
5.4.2 힙
5.5 메모리 관리의 결함
5.6 메모리 안전
5.7 메모리 안전성의 세 가지 원칙
5.7.1 소유권
5.7.2 특성을 통한 유형 재사용
5.7.3 차용
5.7.4 차용 규칙에 따른 방법 유형
5.7.5 수명주기
5.8 Rust의 포인터 유형
5.8.1 참조 - 안전 포인터
5.8.2 원시 포인터
5.8.3 스마트 포인터
5.8.4 참조 횟수 스마트 포인터
5.8.5 내부변동성의 적용
5.9 요약
6장 예외 처리
6.1 예외 처리 소개
6.2 복구 가능한 예외
6.2.1 옵션
6.2.2 결과
6.3 옵션/결과 조합
6.3.1 공통 결합자
6.3.2 결합기 응용
6.3.3 옵션과 결과 유형 간의 변환
6.4 조기 반환 및 연산자 "?"
6.5 복구할 수 없는 예외
6.6 사용자 정의 오류 및 오류 특성
6.7 요약
7장 고급 개념
7.1 타입 시스템 소개
7.1.1 코드 블록 및 표현식
7.1.2 let 문
7.1.3 표현식으로서의 루프
7.1.4 숫자유형의 유형명확성과 기호구분
7.1.5 유형 추론
7.1.6 유형 별칭
7.2 문자열
7.2.1 소유권이 포함된 문자열 - 문자열
7.2.2 문자열 빌려오기——&str
7.2.3 문자열 슬라이싱과 청킹
7.2.4 함수에서 문자열 사용하기
7.2.5 문자열 연결
7.2.6 &str과 String의 응용 시나리오
7.3 글로벌 가치
7.3.1 상수
7.3.2 정적 값
7.3.3 컴파일 타임 함수——const fn
7.3.4lazy_static 매크로를 통한 동적 정적 값
7.4 반복자
7.5 고급 유형
7.5.1 무한 길이 유형
7.5.2 함수 유형
7.5.3 절대 “!”를 입력하지 말고 함수 디스패치
7.5.4 연합
7.5.5 소
7.6 고급 기능
7.6.1 크기 및 ?크기
7.6.2 빌림과 AsRef
7.6.3 투본드
7.6.4 출발과 도착
7.6.5 특징적인 객체와 객체 보안
7.6.6 일반 함수 호출 구문
7.6.7 기능 규칙
7.7 고급 폐쇄
7.7.1 Fn 폐쇄
7.7.2 FnMut 폐쇄
7.7.3 FnOnce 폐쇄
7.8 구조, 열거, 특성의 상수
7.9 모듈, 경로 및 가져오기
7.9.1 가져오기
7.9.2 다시 가져오기
7.9.3 개인정보 보호
7.10 고급 매칭 패턴과 가드
7.10.1 매치 가드
7.10.2 고급 렛 시공
7.11 캐스팅
7.12 유형과 메모리
7.12.1 메모리 정렬
7.12.2 std::mem 모듈
7.13 Serde를 사용한 직렬화 및 역직렬화
7.14 요약
8장 동시성
8.1 프로그램 실행 모델
8.2 동시성
8.2.1 동시 메소드
8.2.2 결함
8.3 Rust의 동시성
8.3.1 스레드 기본 사항
8.3.2 사용자 정의 스레드
8.3.3 스레드에서 데이터에 접근하기
8.4 스레드 동시성 모델
8.4.1 상태 공유 모델
8.4.2 상호 배제
8.4.3 Arc와 Mutex를 통한 공유 가변성
8.4.4 메시징을 통한 통신
8.5 Rust의 스레드 안전성
8.5.1 스레드 안전성이란 무엇입니까?
8.5.2 스레드 안전성의 특성
8.5.3 보내기
8.5.4 동기화
8.6 행위자 모델을 사용하여 동시성 구현
8.7 기타 라이브러리
8.8 요약
9장 매크로와 메타프로그래밍
9.1 메타프로그래밍이란 무엇인가?
9.2 Rust 매크로의 응용 시나리오
9.3 Rust의 매크로와 그 유형
9.4 Macro_rules를 사용하여 매크로를 생성하세요!
9.5 표준 라이브러리에 내장된 매크로
9.6 매크로_규칙! 매크로 태그 유형
9.7 매크로의 반복
9.8 매크로의 고급 응용 - HashMap 초기화를 위한 DSL 작성
9.9 매크로 사용 사례 - 테스트 작성
9.10 연습
9.11 프로세스 매크로
9.12 파생 매크로
9.13 고급 매크로
9.14 일반적으로 사용되는 프로세스 매크로 소프트웨어 패키지
9.15 요약
10장 안전하지 않은 Rust와 외부 함수 인터페이스
10.1 안전과 안전하지 않음
10.1.1 안전하지 않은 함수와 코드 블록
10.1.2 안전하지 않은 특성 및 구현
10.2 Rust에서 C 코드 호출하기
10.3 C 언어를 통해 Rust 코드 호출하기
10.4 Rust에서 외부 C/C 라이브러리 사용하기
10.5 PyO3를 사용하여 네이티브 Python 확장 구성하기
10.6 Rust에서 Node.js용 기본 확장 만들기
10.7 요약
11장 로그
11.1 로깅과 그 중요성
11.2 로깅 프레임워크에 대한 요구사항
11.3 로깅 프레임워크와 그 기능
11.4 로깅 방법
11.4.1 구조화되지 않은 로깅
11.4.2 구조화된 로깅
11.5 Rust에 로그인하기
11.5.1 로그 - Rust에 대한 로깅
11.5.2 env_logger
11.5.3 log4rs
11.5.4 구조적 로깅을 위해 slog 사용
11.6 요약
12장 Rust와 네트워크 프로그래밍
12.1 네트워크 프로그래밍 소개
12.2 동기 네트워크 I/O
12.3 비동기 네트워크 I/O
12.3.1 Rust의 비동기 추상화
12.3.2 비동기 Redis 서버 구축
12.4 요약
13장. Rust로 웹 애플리케이션 만들기
13.1 Rust의 웹 애플리케이션
13.2 HTTP 통신에 하이퍼 사용하기
13.2.1 하이퍼 서버 측 API로 단축 URL 서비스 구축
13.2.2 클라이언트로서의 하이퍼 - URL 짧은 클라이언트 구축
13.2.3 웹 프레임워크
13.3 Actix-web 기본지식
13.4 actix-web을 사용하여 북마크 API 구축
13.5 요약
14장 러스트와 웹어셈블리
14.1 데이터 내구성의 중요성
14.2 SQL라이트
14.3 포스트그레SQL
14.4 r2d2 연결 풀
14.5 포스트그레스와 디젤 ORM
14.6 요약
15장 러스트와 웹어셈블리
15.1 웹어셈블리란?
15.2 WebAssembly의 설계 목표
15.3 웹어셈블리 시작하기
15.3.1 온라인으로 시도해 보세요
15.3.2 WebAssembly 생성 방법
15.4 러스트와 웹어셈블리
15.4.1 wasm-bindgen
15.4.2 기타 웹어셈블리 프로젝트
15.5 요약
16장 Rust와 데스크톱 애플리케이션
16.1 GUI 개발 소개
16.2 GTK 프레임워크
16.3 gtk-rs를 통해 뉴스 데스크톱 애플리케이션 구축
16.4 연습
16.5 기타 새로운 UI 프레임워크
16.6 요약
17장 디버깅
17.1 디버깅 소개
17.1.1 디버거 기본 사항
17.1.2 시운전 전제조건
17.1.3 GDB 구성
17.1.4 예제 프로그램 - 버기
17.1.5 GDB 기본
17.1.6 비주얼 스튜디오 코드에 GDB 통합하기
17.2 rr 디버거 소개
17.3 요약