Rust로 첫 번째 WebAssembly 코드를 생성하는 방법

이 기사에서는 첫 번째 WebAssemly 코드를 생성하기 위해 수행해야 할 작업에 대해 설명합니다.

WebAssembly에 대해 이미 들어봤지만 아직 이 기술로 첫 번째 코드를 작성하지 않았다고 가정해 보겠습니다.

지금은 간단한 스타터 팩을 만들 것입니다. Rust 프로그래밍 언어 와의 조합 이 매력적이어서 선택했습니다.

더 이상 고민하지 않고 해봅시다.

러스트 앤 카고 설치

Rust: 다중 패러다임, 고수준, 범용 프로그래밍 언어(https://www.rust-lang.org/)
Cargo: Rust 빌드 도구 및 패키지 관리자(https://crates.io/)

Cargo.toml 파일 초기화

cargo init --name rust_wasm_starter --lib
# Cargo.toml

[package]
name = "rust_wasm_starter"
version = "0.1.0"
edition = "2021"

[dependencies]

cargo add wasm-bindgen

# Cargo.toml

[package]
name = "rust_wasm_starter"
version = "0.1.0"
edition = "2021"

[dependencies]
wasm-bindgen = "0.2.84"

cargo install wasm-pack

[lib]
crate-type = ["cdylib", "rlib"]

use wasm_bindgen::prelude::wasm_bindgen;

#[wasm_bindgen]
pub fn add(a: usize, b: usize) -> usize {
    return a + b
}

wasm-pack build --release --target web

npm init
// package.json

{
  "name": "rust-wasm-starter",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {},
  "author": "",
  "license": "ISC"
}

npm i http-server --save

"scripts": {
  "start": "http-server -a localhost -p 5200",
  "build": "wasm-pack build --release --target web"
}

import init from "./pkg/rust_wasm_starter.js";
import {add} from "../pkg/rust_wasm_starter.js";

function run() {
    console.log(add(5, 5));
}

init().then(run)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Rust Wasm Starter</title>
    <script type="module" src="./index.js"></script>
</head>
<body>
    See the result in the console.
</body>
</html>

npm run start
Starting up http-server, serving ./

http-server version: 14.1.1
CORS: disabled
Cache: 3600 seconds
Connection Timeout: 120 seconds
Directory Listings: visible
AutoIndex: visible
Serve GZIP Files: false
Serve Brotli Files: false
Default File Extension: none

Available on:
  http://localhost:5200
Hit CTRL-C to stop the server

      

프로젝트를 시작하고 실행하는 데 문제가 있는 경우 내 GitHub 리포지토리를 확인해보세요.

Suggested posts

노코드 혁명: Webflow, Framer, Bubble.io,

노코드 혁명: Webflow, Framer, Bubble.io,

이 놀라운 노코드 플랫폼의 미개발 잠재력을 활용하면서 스릴 넘치는 혁신과 성공의 여정을 시작하십시오. 뛰어난 여성 기업가인 Sapna에 대한 이야기를 들려드리겠습니다.

내가 가장 많이 사용하는 코딩 리소스

내가 가장 많이 사용하는 코딩 리소스

이번 주에 저는 일일 이메일 목록의 회원으로부터 이메일을 받았습니다. 그들은 알고 싶어했습니다. 매일, 매주, 매월 어떤 리소스를 방문합니까? 좋은 질문입니다! 제 작업 흐름과 제가 사용하는 주요 리소스에 대한 통찰력을 공유하게 되어 기쁩니다.

Related posts

전화번호만 있으면 누구나 추적 | OSINT 조사

전화번호만 있으면 누구나 추적 | OSINT 조사

OSINT 수사관, CTF 플레이어 또는 단순히 스팸 전화를 받는 사람일 수 있습니다. 광고에서 본 번호를 확인하려는 사람.

Goodreads 읽기 챌린지는 독성이 있습니다.

Goodreads 읽기 챌린지는 독성이 있습니다.

지역 서점과 또 다른 책을 흥정하면서 손에 가려움증이 퍼졌습니다. 내가 최근에 구입한 나머지 책과 같은 이 책은 내 'To Be Read'(TBR) 더미에서 왕좌를 찾을 것입니다. 그러나 나는 그것을 샀다.

팟캐스트가 영향력 있는 이유는 무엇입니까?

팟캐스트가 영향력 있는 이유는 무엇입니까?

지난 주에 저는 PressGazette(영국 언론 뉴스 웹사이트)를 통해 발송된 보도 자료를 보았습니다. 이 기사는 Scandi 팟캐스트 호스팅 및 광고 회사인 Acast가 팟캐스팅에서 "아마도 가장 영향력 있는" 게시자 컨소시엄을 이끌 것이라고 발표했습니다.

더 이상 암호가 없습니다. 암호가 암호를 대체하는 방법

더 이상 암호가 없습니다. 암호가 암호를 대체하는 방법

모호함을 피하기 위해 다음 용어가 사용됩니다. 인증자; 로그인 웹사이트를 만드는 데 사용되는 휴대폰 사용자가 로그인 요청 서비스를 만들기 위해 사용하는 웹사이트 또는 애플리케이션 주어진 서비스를 제공하는 벤더 예.