2-2. 크레이트(외부 라이브러리) 가져오기
지난 번 크레이트를 추가하는 공부를 하면서 sha2
라는 크레이트를 설치했다.
이번에는 이 sha2
크레이트를 내 코드에 불러오는 것을 해보자.
크레이트를 불러오는 코드는 다음과 같다.
1
2
3
4
5
use sha2::{Sha256, Digest}; // sha2 불러오기
fn main() {
println!("Hello, world!"); // sha2를 사용하는 부분은 다음 포스트에서...
}
Rust에서 모듈, 크레이트, 함수, 타입 등을 현재의 스코프로 가져올 때는 use
키워드를 사용한다.
위의 코드에서는 sha2
크레이트의 Sha256
, Digest
를 가져온다는 내용이다.
여기서 ::
기호는 ‘namespace 연산자’ 또는 ‘경로 지정자’라는 이름으로, Rust에서 모듈이나 크레이트의 ‘내부’로 들어가 해당 스코프 내의 특정 요소들에 접근할 수 있게 해준다.
궁금한 점!!
=
과::
은 어떤 차이가 있을까??
- ’=’ 연산자 ‘=’는 대입 연산자로 사용된다. 이 연산자는 오른쪽 피연산자의 값을 왼쪽 피연산자(보통 변수)에 할당하는 데 사용된다.
- ’::’ 연산자 ‘::’는 ‘경로 지정자’ 또는 ‘namespace 연산자’로, 모듈, 크레이트, 타입 또는 특정 스코프 내의 요소에 접근할 때 사용된다.
즉, ’=’는 값이나 표현식을 변수에 할당할 때 사용되고, ‘::’는 모듈이나 타입의 멤버에 접근할 때 사용된다.
익숙한 Javascript 코드로 변경해보면 다음과 같다.
1
2
3
4
5
6
7
8
9
10
/*
rust 코드
use sha2::{Sha256, Digest};
*/
// ES6(ES2015) 이후의 JavaScript에서 import 문은 모듈에서 특정 기능을 가져오는 코드
import { Sha256, Digest } from "sha2";
// CommonJS 모듈 시스템(주로 Node.js에서 사용)에서 require 함수는 모듈 전체를 가져오거나 모듈의 특정 부분을 추출하는 데 사용되는 코드
const { Sha256, Digest } = require("sha2");