Rust wasm 컴파일해서 웹에서 실행하기
우선 Rust가 기본적으로 설치되어 있어야 한다.
cargo install wasm-pack
우선 wasm-pack을 설치해주자.
그리고 프로젝트를 생성해주자.
cargo new --lib ${project명}
Created library `${project명}` project
기존에 프로젝트가 있다면 해당 명령어를 건너 뛰어도 됩니다.
그러면 lib.rs 라는 파일이 생성되는데, 해당 부분에 function을 정의하면 됩니다.
#[wasm_bindgen]
function을 생성할때 위 어노테이션을 써야 하는데 해당 어노테이션은 Rust와 JS간 소통할 수 있게 도와주는 기능이라고 생각하시면 됩니다. 즉 JS가 해당 기능을 사용하게 만들고 싶을 때 사용하면 됩니다.
그러면 빌드 커맨드를 알아 보겠습니다.
wasm-pack build --target web
해당 커맨드를 실행하면 rust를 wasm에서 실행 가능한 파일로 컴파일 해줍니다. 여기서 주의할 점은 "--target web"을 꼭 지정해야 합니다. 해당 옵션을 지정하지 않을 경우 웹에서 사용이 불가능합니다!
정상적으로 실행이 되면 pkg 폴더가 생성되고 그 안에 ${project명}.js 파일이 생성이 됩니다. 이제 해당 파일을 html에서 script 사용하듯이 사용하면 됩니다.
제 경우
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8" />
<title>hello-wasm example</title>
</head>
<body>
<script type="module">
import init, { test1 } from "./pkg/${project명}.js";
init().then(() => {
test1();
});
</script>
</body>
</html>
이런식으로 작성했는데, 웹 페이지를 열면 test1 function이 실행됩니다.