Rust 튜토리얼
Rust 시작하기
수색…
비고
Rust는 안전성, 속도 및 동시성을 위해 설계된 시스템 프로그래밍 언어입니다. Rust에는 데이터 경합 및 일반적인 버그를 피하기 위해 런타임 오버 헤드가 최소 0에서 0 사이 인 수많은 컴파일 타임 기능과 안전성 검사가 있습니다.
버전
안정된
번역 | 출시일 |
---|---|
1.17.0 | 2017-04-27 |
1.16.0 | 2017-03-16 |
1.15.1 | 2017-02-09 |
1.15.0 | 2017-02-02 |
1.14.0 | 2016-12-22 |
1.13.0 | 2016-11-10 |
1.12.1 | 2016-10-20 |
1.12.0 | 2016-09-30 |
1.11.0 | 2016-08-18 |
1.10.0 | 2016-07-07 |
1.9.0 | 2016-05-26 |
1.8.0 | 2016-04-14 |
1.7.0 | 2016-03-03 |
1.6.0 | 2016-01-21 |
1.5.0 | 2015-12-10 |
1.4.0 | 2015-10-29 |
1.3.0 | 2015-09-17 |
1.2.0 | 2015-08-07 |
1.1.0 | 2015-06-25 |
1.0.0 | 2015-05-15 |
베타
번역 | 예상 출시일 |
---|---|
1.18.0 | 2017-06-08 |
println의 고급 사용법!
println!
(and its sibling, print!
)는 다른 많은 언어에서 발견되는 printf
계열의 함수와 비슷한 동적 데이터를 포함하는 텍스트를 생성하고 인쇄하는 편리한 메커니즘을 제공합니다. 첫 번째 인수는 형식 문자열 이며 다른 인수를 텍스트로 인쇄하는 방법을 지정합니다. 형식 문자열에는 대체가 발생하도록 지정하기위한 자리 표시 자 ( {}
)가 포함될 수 있습니다.
// No substitution -- the simplest kind of format string
println!("Hello World");
// Output: Hello World
// The first {} is substituted with a textual representation of
// the first argument following the format string. The second {}
// is substituted with the second argument, and so on.
println!("{} {} {}", "Hello", true, 42);
// Output: Hello true 42
이 시점에서, 당신은 묻고 있습니다 : 어떻게 println!
부울 값 true
를 문자열 "true"로 인쇄하는 것을 알고 있습니까? {}
는 실제로 Display
특성을 사용하여 값을 텍스트로 변환해야한다는 포매터의 지시입니다. 이 특성은 대부분의 원시 Rust 유형 (문자열, 숫자, 부울 등)에 대해 구현되며 "사용자 지향 출력"을위한 것입니다. 따라서 숫자 42는 십진수로 42로 인쇄되며 내부적으로 저장되는 바이너리에서는 인쇄되지 않습니다.
예를 들어 조각 ( [i32]
), 벡터 ( Vec<i32>
) 또는 옵션 ( Option<&str>
) Option<&str>
Display
구현하지 않는 유형을 인쇄하려면 어떻게해야합니까? 이들에 대한 명확한 사용자 대면 텍스트 표현은 없습니다 (즉, 한 문장에 쉽게 삽입 할 수있는 텍스트 표현). 이러한 값의 인쇄를 용이하게하기 위해 Rust에는 Debug
특성과 해당 {:?}
자리 표시자가 있습니다. 문서에서 : " Debug
는 프로그래머 지향, 디버깅 컨텍스트에서 출력 형식을 지정해야합니다." 몇 가지 예를 살펴 보겠습니다.
println!("{:?}", vec!["a", "b", "c"]);
// Output: ["a", "b", "c"]
println!("{:?}", Some("fantastic"));
// Output: Some("fantastic")
println!("{:?}", "Hello");
// Output: "Hello"
// Notice the quotation marks around "Hello" that indicate
// that a string was printed.
Debug
는 또한 콜론 다음에 #
수정자를 사용하여 활성화 할 수있는 내장 된 예쁜 인쇄 메커니즘을 가지고 있습니다.
println!("{:#?}", vec![Some("Hello"), None, Some("World")]);
// Output: [
// Some(
// "Hello"
// ),
// None,
// Some(
// "World"
// )
// ]
형식 문자열을 사용하면 상당히 복잡한 대 체 를 표현할 수 있습니다.
// You can specify the position of arguments using numerical indexes.
println!("{1} {0}", "World", "Hello");
// Output: Hello World
// You can use named arguments with format
println!("{greeting} {who}!", greeting="Hello", who="World");
// Output: Hello World
// You can mix Debug and Display prints:
println!("{greeting} {1:?}, {0}", "and welcome", Some(42), greeting="Hello");
// Output: Hello Some(42), and welcome
println!
런타임에 충돌하는 것이 아니라 작동하지 않는 무언가를하려고한다면 친구들도 경고합니다.
// This does not compile, since we don't use the second argument.
println!("{}", "Hello World", "ignored");
// This does not compile, since we don't give the second argument.
println!("{} {}", "Hello");
// This does not compile, since Option type does not implement Display
println!("{}", Some(42));
그들의 핵심에서 녹 인쇄 매크로는 format!
둘러싼 단순한 래퍼 format!
매크로를 사용하면 다른 데이터 값의 텍스트 표현을 함께 스티칭하여 문자열을 구성 할 수 있습니다. 따라서 위의 모든 예제에서 println!
format!
서식이 지정된 문자열을 인쇄하는 대신 저장하는 방법 :
let x: String = format!("{} {}", "Hello", 42);
assert_eq!(x, "Hello 42");
매크로없이 콘솔 출력
// use Write trait that contains write() function
use std::io::Write;
fn main() {
std::io::stdout().write(b"Hello, world!\n").unwrap();
}
std::io::Write
특성은 바이트 스트림을 허용하는 개체 용으로 설계되었습니다. 이 경우std::io::stdout()
사용하여 표준 출력 핸들을std::io::stdout()
.Write::write()
는 바이트 문자열 리터럴 (b"<string>"
)으로 생성 된 바이트 슬라이스 (&[u8]
Write::write()
허용합니다.Write::write()
는Result<usize, IoError>
바이트 수 또는 실패한 경우 오류 값을 포함하는Result<usize, IoError>
반환합니다.Result::unwrap()
에 대한 호출은 호출이 성공할 것으로 예상하고 (Result<usize, IoError> -> usize
), 값은 무시됩니다.
최소 예제
Rust에서 전통적인 Hello World 프로그램을 작성하려면 다음 소스 코드가 포함 된 hello.rs
라는 텍스트 파일을 작성하십시오.
fn main() {
println!("Hello World!");
}
이는 main
이라는 새로운 함수를 정의하며, 매개 변수를 사용하지 않고 데이터를 반환하지 않습니다. 이것은 프로그램이 실행될 때 실행을 시작하는 곳입니다. 그 안에는 println!
이것은 콘솔에 텍스트를 인쇄하는 매크로입니다.
이진 응용 프로그램을 생성하려면 소스 파일의 이름을 전달하여 Rust 컴파일러를 호출합니다.
$ rustc hello.rs
결과 실행 파일은 주 소스 모듈과 이름이 같으므로 Linux 또는 MacOS 시스템에서 프로그램을 실행하려면 다음을 실행하십시오.
$ ./hello Hello World!
Windows 시스템에서 다음을 실행하십시오.
C:\Rust> hello.exe Hello World!
시작하기
설치 중
Rust 프로그래밍 언어를 사용하여 무엇이든 할 수 있으려면 Windows 용 또는 Unix 계열 시스템에서 터미널을 사용하여 획득해야합니다. 여기서 $
는 터미널에 입력되는 것을 나타냅니다.
$ curl https://sh.rustup.rs -sSf | sh
이렇게하면 필요한 파일을 검색하고 현재 사용중인 시스템에 상관없이 최신 Rust 버전을 설정할 수 있습니다. 자세한 내용은 프로젝트 페이지를 참조 하십시오 .
참고 : 일부 Linux 배포판 (예 : Arch Linux )은 rustup
로 rustup
제공 rustup
대신 설치할 수 있습니다. 많은 유닉스 계열 시스템이 rustc
cargo
을 별도의 패키지로 제공 rustc
하지만, 여러 번의 릴리즈 채널을 관리하고 크로스 컴파일을하는 것이 훨씬 쉬워지기 때문에 rustup
사용하는 것이 좋습니다.
녹 컴파일러
이제 터미널에서 다음 명령을 실행하여 Rust 가 실제로 컴퓨터에 성공적으로 설치되었는지 확인할 수 있습니다 (UNIX의 경우 명령 프롬프트 또는 Windows의 경우 명령 프롬프트).
$ rustc --version
이 명령이 성공하면 우리 컴퓨터 앞에 설치된 Rust 의 컴파일러 버전이 우리 앞에 표시됩니다.
뱃짐
Rust는 Rust 패키지와 프로젝트를 관리하는 데 사용되는 빌드 도구 인 Cargo를 제공합니다. 컴퓨터에도이 기능이 있는지 확인하려면 현재 실행중인 시스템에 따라 터미널이나 명령 프롬프트를 참조하여 console-console에서 다음을 실행하십시오.
$ cargo --version
Rust 컴파일러와 동일한 명령과 마찬가지로 현재 버전의 Cargo를 반환하고 표시합니다.
첫 번째화물 프로젝트를 만들려면 향할 수 있습니다 화물 .
또는 Minimal 예제 와 같이 rustc
를 사용하여 프로그램을 직접 컴파일 할 수도 있습니다.