Visual Studio Code

Rust ์ฝ”๋“œ์—์„œ๋Š” ํƒ€์ž…์ด ์ƒ๋žต๋˜๋ฏ€๋กœ ์šฐ์ˆ˜ํ•œ IDE๊ฐ€ C++๋ณด๋‹ค ํ›จ์”ฌ ๋” ์œ ์šฉํ•ด์ง‘๋‹ˆ๋‹ค. Visual Studio Code๋Š” Chromium์˜ Rust์—์„œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • VSCode์— ์ด์ „ ํ˜•ํƒœ์˜ Rust ์ง€์›์ด ์•„๋‹Œ rust-analyzer ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.
  • gn gen out/Debug --export-rust-project(๋˜๋Š” ์ถœ๋ ฅ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ƒ์‘)
  • ln -s out/Debug/rust-project.json rust-project.json
Example screenshot from VSCode

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ IDE์— ๋Œ€ํ•ด ํšŒ์˜์ ์ธ ๊ฒฝ์šฐ rust-analyzer์˜ ์ฝ”๋“œ ์ฃผ์„ ๋ฐ ํƒ์ƒ‰ ๊ธฐ๋Šฅ ์ค‘ ์ผ๋ถ€๋ฅผ ์‹œ์—ฐํ•ด ๋ณด๋ฉด ์ƒ๊ฐ์„ ๋ฐ”๊พธ๋Š”๋ฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๋ฐ๋ชจ์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€์žฅ ์ต์ˆ™ํ•œ Chromium ๊ด€๋ จ Rust๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

  • components/qr_code_generator/qr_code_generator_ffi_glue.rs๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
  • ์ปค์„œ๋ฅผ qr_code_generator_ffi_glue.rs์˜ \QrCode::new` ํ˜ธ์ถœ(26๋ฒˆ ์ค„ ๋ถ€๊ทผ) ์œ„๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ๋ชจ ๋ฌธ์„œ ํ‘œ์‹œ(์ผ๋ฐ˜์ ์ธ ๋ฐ”์ธ๋”ฉ: vscode = ctrl k i; vim/CoC = K)
  • ๋ฐ๋ชจ ์ •์˜๋กœ ์ด๋™(์ผ๋ฐ˜์ ์ธ ๋ฐ”์ธ๋”ฉ: vscode = F12; vim/CoC = g d) ๊ทธ๋Ÿฌ๋ฉด //third_party/rust/.../qr_code-.../src/lib.rs๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐœ์š” ๋ฐ๋ชจ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  QrCode::with_bits ๋ฉ”์„œ๋“œ(164๋ฒˆ ์ค„ ๊ทผ์ฒ˜, ๊ฐœ์š”๋Š” vscode์˜ ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ ์ฐฝ์— ์žˆ์Œ, ์ผ๋ฐ˜์ ์ธ vim/CoC ๋ฐ”์ธ๋”ฉ = space o)๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ๋ชจ ์œ ํ˜• ์ฃผ์„(QrCode::with_bits ๋ฉ”์„œ๋“œ์— ๋ช‡ ๊ฐ€์ง€ ์ข‹์€ ์˜ˆ๊ฐ€ ์žˆ์Œ)

BUILD.gn ํŒŒ์ผ์„ ์ˆ˜์ •ํ•œ ํ›„ gn gen ... --export-rust-project๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ์ด ์„ธ์…˜์˜ ์—ฐ์Šต ์ „๋ฐ˜์— ๊ฑธ์ณ ๋ช‡ ๋ฒˆ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.