μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Reversing
- λ°±μ€
- Operating System
- μ°λΆν¬
- Rust
- Python challenge
- μκ³ λ¦¬μ¦
- Database
- νμ΄μ¬ μ²Όλ¦°μ§
- λ°±μ€ λ¬μ€νΈ
- java
- μλ° κ°λ
- C
- μλ° κΈ°μ΄
- ubuntu
- λ°μ΄ν° ν΅μ
- μ€λΌν΄DB
- νμ΄μ¬ μκ³ λ¦¬μ¦
- λ¬μ€νΈ νλ‘κ·Έλλ° κ³΅μ κ°μ΄λ
- λ¬μ€νΈ μμ
- OS
- νμ΄μ¬
- Python
- νμ΄μ¬ μ±λ¦°μ§
- μλ°
- data communication
- λ¬μ€νΈ
- λ°μ΄ν°λ² μ΄μ€
- μ€λΌν΄
- μ΄μ체μ
Archives
- Today
- Total
IT’s Portfolio
[Rust] Start Rust (Day 18) - Error Handling λ³Έλ¬Έ
728x90
λ°μν
π¦ Rust Day 18
π³οΈ Error Handling
- λ¬μ€νΈλ μλ¬μ λ°μ κ°λ₯μ±μ μΈμ§νκ³ κ°λ°μκ° μ½λλ₯Ό μ»΄νμΌνκΈ° μ μ μλ¬λ₯Ό μ²λ¦¬νλλ‘ μ λν¨
- λλΆλΆ μΈμ΄λ μλ¬λ₯Ό ꡬλΆνμ§ μκ³
μμΈ(exception)
κ°μ λ©μ»€λμ¦μ μ΄μ©ν΄ λκ°μ΄ μ²λ¦¬ν¨ - λ¬μ€νΈμ μμΈλΌλ κ°λ μ μ‘΄μ¬νμ§ μμΌλ©°, μλ¬λ₯Ό λ κ°μ§λ‘ ꡬλΆνκ³ μμ
ν볡 κ°λ₯ν μλ¬(recoverable error)
- μ‘΄μ¬νμ§ μλ νμΌ λ± ν볡 κ°λ₯ν μλ¬λ μ¬μ©μμκ² λ¬Έμ λ₯Ό λ³΄κ³ νκ³ μμ μ λ€μ μλνλλ‘ μμ²ν μ μμ
Result<T, E>
νμ μΌλ‘ νν
νλ³΅μ΄ λΆκ°λ₯ν μλ¬(unrecoverable error)
- ν볡 λΆκ°λ₯ν μλ¬λ λ°°μ΄μ λ²μλ₯Ό λ²μ΄λλ λ©λͺ¨λ¦¬μ λν μ κ·Όμ²λΌ νμ λ²κ·Έμ κ°λ₯μ±μ λ΄ν¬νκ³ μμ
- ν΄λΉ μλ¬κ° λ°μν νλ‘κ·Έλ¨μ
panic!
맀ν¬λ‘λ₯Ό λ°μΈλ©νλ©° μ€νμ μ’ λ£ν¨
1οΈβ£ panic!
맀ν¬λ‘λ₯Ό μ΄μ©ν ν볡 λΆκ°λ₯ν μλ¬ μ²λ¦¬
- ν¨λμ λλΆλΆ μ΄λ€ μ’ λ₯μ λ²κ·Έκ° λ°κ²¬λμλλ° κ°λ°μκ° μ΄ μλ¬λ₯Ό μ²λ¦¬ν λ°©λ²μ΄ λ§λ μΉ μμ λ νμ©
panic!
맀ν¬λ‘λ₯Ό μ€ννλ©΄ νλ‘κ·Έλ¨μ μ€ν¨ λ©μμ§λ₯Ό μΆλ ₯νκ³ , μ€νμ λͺ¨λ μ 리ν λ€μ μ’ λ£ν¨- ν¨λμ΄ λ°μνμ λ μ€νμ νμ΄μ£Όκ±°λ(unwind) μ·¨μνκΈ°
- κΈ°λ³Έμ μΌλ‘ ν¨λμ΄ λ°μνλ©΄ νλ‘κ·Έλ¨μ μ€νμ νκΈ° μμ
- μμμΌλ‘ μννλ©° κ° ν¨μμ μ λ¬λμλ λ°μ΄ν° μ 리
- μ΄λ₯Ό μν΄ μ€νλλ μμ μ μμ μλΉν¨
- μ€νμ μ¦μ μ·¨μν΄μ μ€νμ μ 리νμ§ μκ³ μ ν리μΌμ΄μ
μ μ’
λ£νλ λ°©λ²
- νλ‘κ·Έλ¨μ΄ μ¬μ©νλ λ©λͺ¨λ¦¬λ OSκ° μ 리ν΄μΌ ν¨
- νλ‘κ·Έλ¨μ λ°μ΄λ리 νμΌμ ν¬κΈ°λ₯Ό μ΅λν μκ² ν΄μΌ νλ€λ©΄
Cargo.toml
νμΌμ[profile]
μΉμ μpanic = 'abort'
λ₯Ό μΆκ°νλ©΄ μ€νμ νμ΄μ£Όμ§ μκ³ μ·¨μν μ μμ - λ¦΄λ¦¬μ¦ λͺ¨λμμ ν¨λμ μ·¨μν μ
[profile.release] panic = 'abort'
- κΈ°λ³Έμ μΌλ‘ ν¨λμ΄ λ°μνλ©΄ νλ‘κ·Έλ¨μ μ€νμ νκΈ° μμ
fn main() {
panic!("Error!");
}
panic!
맀ν¬λ‘λ₯Ό νΈμΆνλ©΄ λ§μ§λ§ λ μ€μ μλ¬ λ©μμ§κ° νμλ¨- 첫 λ²μ§Έ μ€μ ν¨λ λ©μμ§μ ν¨λμ΄ λ°μν μμ€ μ½λμ μμΉκ° μΆλ ₯λ¨
src/main.rs:4:5
=>src/main.rs
νμΌμ λ€ λ²μ§Έ μ€ λ€ λ²μ§Έ λ¬Έμ
π€ panic!
μμΆμ μ¬μ©νκΈ°
fn main() {
let v = vec![1, 2, 3];
v[99];
}
- 벑ν°μ ν¬κΈ°λ₯Ό λ²μ΄λλ μΈλ±μ€λ₯Ό μ΄μ©ν΄ κ°μ μ½μ λ,
panic!
맀ν¬λ‘ νΈμΆ - C κ°μ λ€λ₯Έ μΈμ΄λ μ΄λ° κ²½μ° μμΉ μλ κ°μ΄λΌλ κ°λ°μκ° μ§μ ν μμΉμ κ°μ 리ν΄ν¨
λ²νΌ μ€λ²λ¦¬λ(buffer overread)
- μΈλ±μ€λ‘ μ§μ ν μμΉμ λ©λͺ¨λ¦¬κ° 벑ν°κ° κ΄λ¦¬νλ λ©λͺ¨λ¦¬κ° μλλλΌλ 벑ν°μ μ μ₯λ κ°μ ν΄λΉνλ μμΉμ λ©λͺ¨λ¦¬μ μ μ₯λ κ°μ 리ν΄ν¨
- 곡격μκ° ν΄λΉ λ°©λ²μΌλ‘ μΈλ±μ€λ₯Ό μ‘°μν΄μ μ½μ΄μλ μ λλ κ°μ μ½κ² λλ 보μμμ μ·¨μ½μ μ΄ λκΈ° μ¬μ
panic!
맀ν¬λ‘κ° λ°μΈλ©λ μ€ν κ²°κ³Όμ μλ λ ΈνΈμλRUST_BACKTRACE
νκ²½ λ³μλ₯Ό μ΄μ©ν΄ μ νν μ΄λ»κ² μλ¬κ° λ°μνλμ§λ₯Ό μμΆμ ν μ μλ€λ κ²μ μλ €μ€- μμΆμ μ κ·Έ μ§μ κΉμ§ νΈμΆλ λͺ¨λ ν¨μμ λͺ©λ‘
- μ μΌ μμ ν¨μλΆν° μ°λ¦¬κ° μμ±ν νμΌκΉμ§ ν¨μμ νΈμΆ κ³Όμ μ μΆμ νλ κ²
- μμΆμ μ 보λ₯Ό μ»μΌλ €λ©΄
λλ²κ·Έ μ¬λ³Ό(debug symbols)
μ΄ νμ±νλμ΄ μμ΄μΌ ν¨cargo build
λcargo run
λͺ λ Ήμ--release
νλκ·Έ μμ΄ μ€ννλ©΄ κΈ°λ³Έμ μΌλ‘ νμ±νλ¨
2οΈβ£ Result
νμ
μΌλ‘ μλ¬ μ²λ¦¬νκΈ°
- λλΆλΆ μλ¬λ νλ‘κ·Έλ¨μ μμ ν μ’ λ£ν΄μΌ ν μ λλ‘ μΉλͺ μ μ΄μ§λ μμ
enum Result<T, E> {
Ok(T),
Err(E),
}
Result
μ΄κ±°μ μ μ μ½λT
μE
λ μ λ€λ¦ νμ 맀κ°λ³μT
λ μμ μ΄ μ±κ³΅ν κ²½μ°Ok
μ΄κ²κ° μμ ν¬ν¨λ κ°μ νμE
λ μμ μ΄ μ€ν¨ν κ²½μ°Err
μ΄κ²κ° μμ ν¬ν¨λ κ°μ νμ
use std::fs::File;
fn main() {
let f = File::open("hello.txt");
let f = match f {
Ok(file) => file,
Err(error) => {
panic!("File Open Error: {:?}", error);
}
};
}
- match ννμμΌλ‘ Result νμ μ 리ν΄κ°μ μ μ΄νλ μ½λ
Option
μ΄κ±°μμ λ§μ°¬κ°μ§λ‘Result
μ΄κ±°μλ νλ λ₯λμ μν΄ μλμΌλ‘ μΆκ°λ¨
π€ match
ννμμΌλ‘ μ¬λ¬ μ’
λ₯μ μλ¬ μ²λ¦¬νκΈ°
use std::{fs::File, io::ErrorKind};
fn main() {
let f = File::open("hello.txt");
let f = match f {
Ok(file) => file,
Err(ref error) => match error.kind() {
ErrorKind::NotFound => match File::create("hello.txt") {
Ok(fc) => fc,
Err(e) => panic!("File create error!: {:?}", e),
},
others => panic!("File open error!: {:?}", others),
},
};
}
- μ€μ²©λ
match
ννμμ μ΄μ©ν΄ μλ¬μ μ’ λ₯μ λ°λΌ λ€λ₯΄κ² μ²λ¦¬νκΈ°File::open
λ©μλκ° λ¦¬ν΄νλErr
μ΄κ²κ°μ μ μ₯λ κ°μ νμ μio::Error
νμio::Error
ꡬ쑰체λio::ErrorKind
νμ μ 리ν΄νλkind
λ©μλ μ 곡ErrorKind::NotFound
: μ‘΄μ¬νμ§ μλ νμΌμ μ΄κ³ μ ν λ λ°μνλ μ΄κ²κ°error.kind()
κ° λ¦¬ν΄ν κ°μ΄ErrorKind::NotFound
μ΄κ²κ°μΌ λ νμΌ μμ±- νμΌ μμ±μ΄ μ€ν¨ν κ²½μ°λ₯Ό λλΉν΄
match
ννμμ κ°μ§λ₯Ό μΆκ°ν¨ ErrorKind::NotFound
μλ¬λ₯Ό μ μΈν λ€λ₯Έ μλ¬μΌ κ²½μ° νλ‘κ·Έλ¨μ΄ ν¨λμ λΉ μ§
π€ μλ¬ λ°μ μ ν¨λμ λ°μνλ λ λΉ λ₯Έ λ°©λ²: unwrap
κ³Ό expect
Result<T, E>
νμ μ λ€μν μμ μ μ²λ¦¬νκΈ° μνunwrap
λ©μλμexpect
λ©μλ μ 곡unwrap
λ©μλ- μ€μ²©λ
match
ννμκ³Ό μ νν κ°μ λμμ νλλ¨μΆ(shortcut)
λ©μλ Result
νμ μ΄Ok
μ΄κ²κ°μΌ λOk
μ΄κ²κ°μ μ μ₯λ κ° λ¦¬ν΄Result
νμ μ΄Err
μ΄κ²κ°μΌ λλpanic!
맀ν¬λ‘ νΈμΆ
- μ€μ²©λ
expect
λ©μλunwrap
λ©μλμ μ μ¬νμ§λ§panic!
맀ν¬λ‘μ μλ¬ λ©μμ§ μ λ¬ κ°λ₯- κ°λ°μμ μλλ₯Ό λ λͺ ννκ² νννλ λμμ ν¨λμ΄ λ°μν μμΈμ λ μ½κ² μΆμ κ°λ₯
π€ μλ¬ μ ννκΈ°
use std::io::{self, Read};
use std::fs::File;
fn read_username_from_file() -> Result<String, io::Error> {
let mut f = match File::open("hello.txt") {
Ok(file) => file,
Err(e) => return Err(e),
};
let mut s = String::new();
match f.read_to_string(&mut s) {
Ok(_) => Ok(s),
Err(e) => Err(e),
}
}
fn main() {
println!("{:?}", read_username_from_file());
}
match
ννμμ μ΄μ©ν΄ νΈμΆμμκ² μλ¬λ₯Ό 리ν΄νλread_username_from_file
ν¨μ- ν΄λΉ ν¨μμ λ¦¬ν΄ νμ
μ
Result<String, io::Error>
Result<T, E>
νμ- μ λ€λ¦ 맀κ°λ³μ
T
:String
- μ λ€λ¦ 맀κ°λ³μ
E
:io:Error
- λ¬μ€νΈλ μλ¬ μ ννκΈ° μμ
μ λ μ½κ² μ²λ¦¬ν μ μλλ‘
?
μ°μ°μ μ 곡
(1) ?
μ°μ°μλ₯Ό μ΄μ©ν΄ μλ¬λ₯Ό λ μ½κ² μ ννκΈ°
use std::io::{self, Read};
use std::fs::File;
fn read_username_from_file() -> Result<String, io::Error> {
let mut f = File::open("hello.txt")?;
let mut s = String::new();
f.read_to_string(&mut s)?;
Ok(s)
}
fn main() {
println!("{:?}", read_username_from_file());
}
Result
κ° λ€μ λΆμΈ?
μ°μ°μλmatch
ννμμ μ΄μ©ν μ²λ¦¬μ κ±°μ κ°μ λ°©μμΌλ‘ λμν¨Result
κ°μ΄Ok
Ok
μ΄κ²κ°μ μ μ₯λ κ° λ¦¬ν΄ ν κ³μ μ€ν
Result
κ°μ΄Err
Err
μ΄κ²κ°μ΄return
keywordλ₯Ό μ¬μ©ν κ²μ²λΌ μ 체 ν¨μμ 리ν΄κ°μ΄ λ¨
match
ννμκ³Ό?
μ°μ°μ λμμ μ°¨μ΄μ ?
μ°μ°μμ μλ¬κ°μfrom
ν¨μλ₯Ό μ΄μ©ν΄ μ λ¬λ¨from
ν¨μ- νμ€ λΌμ΄λΈλ¬λ¦¬μ μ μλ
From
νΈλ μ΄νΈμ μ μΈλμ΄ μμ - μλ¬λ₯Ό μ΄λ€ ν νμ μμ λ€λ₯Έ νμ μΌλ‘ λ³νν¨
- νμ€ λΌμ΄λΈλ¬λ¦¬μ μ μλ
?
μ°μ°μκ°from
ν¨μλ₯Ό νΈμΆνλ©΄ μ λ¬λ μλ¬ νμ μ νμ¬ ν¨μμ λ¦¬ν΄ νμ μ μ μλ μλ¬ νμ μΌλ‘ λ³νλ¨
use std::io::{self, Read};
use std::fs::File;
fn read_username_from_file() -> Result<String, io::Error> {
let mut s = String::new();
File::open("hello.txt")?.read_to_string(&mut s)?;
Ok(s)
}
fn main() {
println!("{:?}", read_username_from_file());
}
?
μ°μ°μ λ€μ λ©μλλ₯Ό μ°κ²°νμ¬ νΈμΆνλ©΄ μ½λλ₯Ό λ κ°κ²°νκ² μμ±μ΄ κ°λ₯ν¨
use std::{io, fs};
fn read_username_from_file() -> Result<String, io::Error> {
fs::read_to_string("hello.txt")
}
fn main() {
println!("{:?}", read_username_from_file());
}
- νμΌμ λ¬Έμμ΄λ‘ μ½λ μμ μ λ§€μ° λΉλ²ν μμ
- λλ¬Έμ λ¬μ€νΈλ
fs::read_to_string
ν¨μλ₯Ό μ κ³΅ν¨ - κ°κ²°νμ§λ§ μμ μμ±ν μ½λμ κ°μ λμμ μνν¨
(2) ?
μ°μ°μλ Result
νμ
μ 리ν΄νλ ν¨μμμλ§ μ¬μ©ν μ μλ€
?
μ°μ°μλmatch
ννμκ³Ό κ°μ λμμ μ€ννλλ‘ μ μλμ΄ μκΈ° λλ¬Έ- ν¨μμ λ¦¬ν΄ νμ
μ λ°λμ
Result
νμ μ΄μ΄μΌ ν¨
- ν¨μμ λ¦¬ν΄ νμ
μ λ°λμ
Result
νμ μ 리ν΄νμ§ μλ ν¨μ μμμResult
νμ μ 리ν΄νλ λ€λ₯Έ ν¨μλ₯Ό νΈμΆν λλ νΈμΆμμκ² μλ¬λ₯Ό μ νν κ°λ₯μ±μ΄ μλ?
μ°μ°μλ₯Ό μ¬μ©ν기보λ€match
ννμμ΄λResult
νμ μ λ©μλ μ€ νλλ₯Ό μ¬μ©ν΄μ μ²λ¦¬ν΄μΌ ν¨
use std::{fs::File, error::Error};
fn main() -> Result<(), Box<dyn Error>>{
let f = File::open("hello.txt")?;
Ok(())
}
main
ν¨μλ 리ν΄ν μ μλ κ°μ νμ μ μ νμ΄ μμ- κ·Έ μ€ νλλ
()
μ΄λ©°,Result<T, E>
νμ μ 리ν΄ν μλ μμ
- κ·Έ μ€ νλλ
Box<dyn Error>
νμ μνΈλ μ΄νΈ κ°μ²΄(trait object)
νμ- 'λͺ¨λ μ’ λ₯μ μλ¬' μλ―Έ
3οΈβ£ ν¨λμ λΉ μ§ κ²μΈκ°? λ§ κ²μΈκ°?
Result
κ°μ 리ν΄νλ©΄ μ§μ κ²°μ μ λ΄λ¦¬λ κ²μ΄ μλλΌ νΈμΆμμκ² μ νμ§λ₯Ό μ€ μ μμ- μ μ ν μν©μΈ κ²½μ° μλ¬λ‘λΆν° ν볡μ μλ
- ν΄λΉ μλ¬λ‘λΆν° ν볡ν μ μλ€λ κ²°λ‘ μ λ΄λ¦΄ κ²½μ° ν¨λ κ²°μ
Result
νμ μ 리ν΄νλ κ²λ³΄λ€ κ·Έλ₯ ν¨λμ λ°μμν€λ κ²μ΄ λ μ μ ν λλ μμ
π€ μμ , νλ‘ν νμ μ½λ, κ·Έλ¦¬κ³ ν μ€νΈ
unwrap
κ³Όexpect
λ©μλλ μλ¬λ₯Ό μ΄λ»κ² μ²λ¦¬ν κ²μΈμ§ κ²°μ νκΈ°μ μμ νλ‘ν νμ΄νμ ν΄λ³΄λ μν©μ λ§€μ° μ μ©ν¨- ν
μ€νΈ μ½λλ₯Ό μ€ννλ μ€μ λ©μλ νΈμΆμ΄ μ€ν¨νλ©΄ μ 체 ν
μ€νΈλ₯Ό μ€ν¨μ²λ¦¬ ν΄μΌ ν κ²μ
panic!
맀ν¬λ‘λ ν μ€νΈκ° μ€ν¨νμμ νμν λλ μ¬μ©νλ―λ‘unwrap
μ΄λexpect
λ©μλλ₯Ό μ΄μ©ν΄λ λ§μ°¬κ°μ§μ
π€ μ»΄νμΌλ¬λ³΄λ€ κ°λ°μκ° λ λ§μ μ 보λ₯Ό κ°μ§ κ²½μ°
Result
νμ μ κ²°κ³Όκ°Ok
κ°μμ΄ νμ€νλλΌλ, μ»΄νμΌλ¬κ° μ΄ν΄ν μ μλ λ‘μ§μ΄λΌλ©΄unwrap
λ©μλλ₯Ό ν¨κ» νΈμΆν΄μ£Όλ κ²μ΄ μ’μ- νΈμΆνλ μμ μ΄ νΉμ μν©μμλ μ€ν¨ν λ¦¬κ° μλλΌλ ν΅μμ μΌλ‘ κ·Έ μμ μ μΌλ§λ μ§ μ€ν¨ν κ°λ₯μ±μ΄ μκΈ° λλ¬Έ
π€ μλ¬ μ²λ¦¬λ₯Ό μν μ‘°μΈ
- μ½λκ° κ²°κ΅μ μλͺ»λ μνκ° λ μν©μ΄λΌλ©΄ ν¨λμ λ°μμν€λ κ²λ λμ μ νμ΄ μλ
- μλͺ»λ μν
- μ΄λ€ κ°μ€μ΄λ 보μ₯, κ³μ½ νΉμ λΆλ³μ΄μ΄μΌ ν κ²λ€μ΄ κΉ¨μ§ μν©
- μ ν¨νμ§ μμ κ°, λͺ¨μλ κ°, νΉμ μ€μλ‘ λμΉ κ°μ΄ μ½λλ‘ μ λ¬λλ μν©
- μλͺ»λ μνλ μλ κΈ°λνλ λμμ΄ μ΄μ©λ€ μ€ν¨νλ μν©μ λ§νλ κ²μ΄ μλ
- μ΄λ μ§μ μ΄νμ μ½λλ νλ‘κ·Έλ¨μ΄ μ λ μλͺ»λ μνμ λμ΄μ§ μμμΌλ§ μ μμ μΌλ‘ λμν¨
- μ΄ μ 보λ₯Ό μ¬μ© μ€μΈ νμ μΌλ‘ ννν λ°©λ²μ΄ μμ
- μλͺ»λ μν
- μ΄λ€ μ΄μ λ‘ μμ
μ΄ μ€ν¨ν μ μλ€λ©΄
panic!
맀ν¬λ‘λ₯Ό νΈμΆνλ κ²λ³΄λ€λResult
νμ μ 리ν΄νλ νΈμ΄ λμ - μ½λκ° μ΄λ€ κ°μ λν μμ
μ μνν λλ κ·Έ κ°μ΄ μ ν¨νμ§λ₯Ό λ°λμ λ¨Όμ κ²μ¬ν ν κ·Έλ μ§ μμΌλ©΄ ν¨λμ λ°μμμΌμΌ ν¨
- κ°μ₯ ν° μ΄μ λ μμ μ±
- λͺ¨λ ν¨μμμ κ°λ₯ν μλ¬λ₯Ό λͺ¨λ κ²μ¬νλ κ²λ νλ μμ
μ
- λ¬μ€νΈμ νμ
μμ€ν
(κ·Έλ¦¬κ³ μ»΄νμΌλ¬μ νμ
κ²μ¬)μ μ΄μ©ν΄ μ¬λ¬ κ°μ§ κ²μ¬ μν κ°λ₯
- ν¨μ 맀κ°λ³μμ νμ κ°μ κ²½μ°λ μ»΄νμΌλ¬κ° ν΄λΉ νμ μ μ ν¨ν κ°μ΄ μ λ¬λλ κ²μ΄ 보μ₯λλ€λ κ²μ μκ³ μμΌλ―λ‘ μΆκ° κ²μ¬ μμ΄ λ‘μ§μ ꡬνν΄ λκ°λ©΄ λ¨
- λ¬μ€νΈμ νμ
μμ€ν
(κ·Έλ¦¬κ³ μ»΄νμΌλ¬μ νμ
κ²μ¬)μ μ΄μ©ν΄ μ¬λ¬ κ°μ§ κ²μ¬ μν κ°λ₯
π€ μ ν¨μ± κ²μ¬λ₯Ό μν 컀μ€ν νμ
- μλ‘μ΄ νμ μ μμ±νκ³ μ΄ νμ μ μΈμ€ν΄μ€λ₯Ό μμ±νλ ν¨μμ μ ν¨μ± κ²μ¬ μ½λλ₯Ό μμ±νλ κ²μ΄ λ§€μ° ν¨μ¨μ μΈ λ°©λ²
Summary
panic!
맀ν¬λ‘- νλ‘κ·Έλ¨μ΄ μ λλ‘ μ²λ¦¬ν μ μλ λΉμ μμ μΈ μνμ λμλ€λ κ²μ μλ €μ£Όκ³ μ ν¨νμ§ μκ±°λ μλͺ»λ κ°μ κ³μ μ¬μ©νμ§ λͺ»νλλ‘ νλ‘μΈμ€λ₯Ό μ’ λ£ν¨
Result
μ΄κ±°μ- λ¬μ€νΈμ νμ μμ€ν μ μ΄μ©ν΄ μμ μ΄ μ€ν¨ν μλ μμμ λͺ μνκ³ , μ€ν¨ν κ²½μ° νλ‘κ·Έλ¨μ ν볡ν κΈ°νλ₯Ό μ 곡ν¨
Result
νμ μ 리ν΄ν΄μ νΈμΆ μ½λκ° μμ μ΄ μ±κ³΅ν κ²½μ°μ μ€ν¨ν κ²½μ°λ₯Ό λͺ¨λ μ²λ¦¬ν μ μλλ‘ μ λ κ°λ₯
728x90
λ°μν
'Development Study > Rust' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Algorithm] Baekjoon - λ°λ³΅λ¬Έ λ¨κ³ (0) | 2023.05.24 |
---|---|
[Algorithm] Baekjoon - 쑰건문 λ¨κ³ (0) | 2023.04.04 |
[Rust] Start Rust (Day 17) - Rust Example Script 5 [Simple Employees DataBase] (3) | 2023.02.27 |
[Rust] Start Rust (Day 16) - Rust Example Script 4 [Pig Latin] (0) | 2023.02.25 |
[Rust] Start Rust (Day 15) - Rust Example Script 3 [Get Avg & Mid & Mode] (0) | 2023.02.25 |
Comments