DEV Community

Belajar Rust - 03: IDE untuk Rust

IDE (Integrated Development Environment) adalah software yang digunakan sebagai peranti pengembangan terintegrasi. IDE sangat penting dalam membangun aplikasi. Produktivitas pemrogram biasanya sangat tergantung dari kepiawaiannya menggunakan IDE. Bab ini membahas tentang IDE yang bisa digunakan untk membangun aplikasi menggunakan Rust. Ada beberapa software dasar yang akan dijelaskan dan digunakan dalam pembahasan ini, yaitu:

  1. Vim / NeoVim
  2. Visual Studio Code / VSCodium
  3. Eclipse

Pada umumnya, terkait dengan IDE, ada 2 kategori:

  1. IDE yang memang sejak awal khusus dirancang untuk suatu bahasa pemrograman tertentu. Contoh dari IDE ini antara lain adalah IDE Borland Delphi, IntelliJ IDEA, Apache NetBeans, dan lain-lain. Software jenis ini biasanya juga memberikan fasilitas pembuatan plugins untuk bahasa pemrograman lain dengan mekanisme plugins yang khusus untuk IDE tersebut, contohnya adalah Apache NetBeans yang bisa digunakan untuk C/C++, PHP, dan lain-lain. Mekanisme ini tidak cross software, artinya mekanisme plugin untuk Apache NetBeans tidak akan bisa digunakan oleh IntelliJ IDEA.
  2. Editor teks yang bersifat umum / generik dan memerlukan konfigurasi maupun plugin / add-on / tambahan untuk keperluan penggunaan editor teks tersebut untuk keperluan suatu bahasa pemrograman.

Kecenderungan saat ini menuju ke nomor 2, bahkan beberapa IDE (kategori nomor 1) juga menggunakan mekanisme nomor 2. Mekanisme pertama memang cenderung ditinggalkan karena setiap IDE / editor teks harus secara spesifik mendefinisikan dan mengelola plugins sendiri-sendiri. Selain mendatangkan kerepotan pengelole IDE / editor teks, hal ini juga mendatangkan kerepotan komunikas serta pengembangan kompilator / interpreter bahasa pemrograman. Karena berbagai kerepotan itu, makan muncul Language Server Protocol / LSP.

Dengan menggunakan mekanisme LSP, maka setiap IDE / editor teks hanya perlu membuat dan mengelola klien LSP saja sesuai dengan protokol LSP. Setelah itu, komunitas bahasa pemrograman tertentu akan membuat dan mengelola server LSP sesuai spesifikasi protokol LSP. Dengan demikian, selama IDE / editor teks mengikuti protokol klien LSP dan tersedia server LSP dari komunitas pengembangan bahasa pemrograman, maka sudah cukup untuk menjadikan IDE / editor teks tersebut sebagai IDE bahasa pemrograman sesuai dengan server LSP yang dikembangkan komunitas pengembang bahasa pemrograman tersebut. Protokol LSP menyediakan:

  1. Completion
  2. Hover/tooltips
  3. Go to definition
  4. Show/go to references
  5. Show method signatures
  6. Rename
  7. Code actions, misalnya untuk automatic formatting, organize imports,dan lain-lain.

Mekanisme LSP kurang lebih sebagai berikut:


Menjalankan IDE / Editor teks => menjalankan plugin / add-on klien LSP => mengaktifkan server LSP sesuai konfigurasi => IDE bahasa pemrograman.


Untuk kompilator Rust, server LSP dikembangkan di repo rls. Untuk menggunakan LSP, install terlebih dahulu rls:

$ rustup component add rls rust-analysis rust-src
info: downloading component 'rls'
info: installing component 'rls'
info: downloading component 'rust-analysis'
  2.8 MiB /   2.8 MiB (100 %) 868.9 KiB/s in  4s ETA:  0s
info: installing component 'rust-analysis'
info: downloading component 'rust-src'
  2.3 MiB /   2.3 MiB (100 %)   1.2 MiB/s in  2s ETA:  0s
info: installing component 'rust-src'
$
Enter fullscreen mode Exit fullscreen mode

Hasilnya adalah sebagai berikut:

$ rls --version
rls 1.41.0 (a82a052 2021-07-21)
$ rls --help

    --version or -V to print the version and commit info
    --help or -h for this message
    --cli starts the RLS in command line mode
    No input starts the RLS as a language server
$
Enter fullscreen mode Exit fullscreen mode

Setelah itu, IDE / editor teks dikonfigurasi untuk mengaktifkan LSP.

Vim / Neovim

Mengkonfigurasi Vim / Neovim dari awal cukup menyita waktu dan cenderung ribet. Untuk menyingkat, akan digunakan SpaceVim. Dengan menggunakan SpaceVim, kerumitan-kerumitan instalasi klien LSP akan diabstraksi oleh Spacevim, sehingga menggunakan fasilitas LSP akan lebih mudah.

Instalasi Vim

Distribusi Linux biasanya secara default sudah menginstall Vim. Jika belum, maka bisa menggunakan package manager (apt, urpmi, dnf, pacman, dan lain-lain) ataupun install dari kode sumber Vim secara langsung. Untuk OS lain, bisa mengikuti petunjuk di halaman download Vim.

Instalasi Neovim

Neovim biasanya juga tersedia di berbagai distribusi Linux dan bisa diinstall menggunakan package manager. Untuk OS lain, bisa mengikuti petunjuk di GitHub Releases page untuk Neovim.

Instalasi SpaceVim

Instalasi Spacevim dijelaskan di [URL instalasi SpaceVim]. Jika menggunakan Windows, tersedia file install.cmd yang bisa dijalankan secara langsung. Jika menggunakan Linux:

Instalasi SpaceVim untuk Vim dan Neovim

$ curl -sLf https://spacevim.org/install.sh | bash
Enter fullscreen mode Exit fullscreen mode

Instalasi SpaceVim untuk Vim

$ curl -sLf https://spacevim.org/install.sh | bash -s -- --install vim
Enter fullscreen mode Exit fullscreen mode

Instalasi SpaceVim untuk Neovim

$ curl -sLf https://spacevim.org/install.sh | bash -s -- --install neovim
$
Enter fullscreen mode Exit fullscreen mode

Catatan: saat menginstall SpaceVim di Linux, kompilasi harus dilakukan untuk vimproc.vim. Masuk ke direktori $HOME/.SpaceVim/bundle/vimproc.vim, setelah itu berikan perintah make. Hasilnya adalah file $HOME/.SpaceVim/bundle/vimproc.vim/lib/vimproc_linux64.so*

Konfigurasi SpaceVim

Konfigurasi SpaceVim diletakkan pada file $HOME/Spacevim.d/init.toml. Berikut ini tambahan yang diperlukan untuk konfigurasi SpaceVim - Rust:

...
...
...
[[layers]]
  name = "lang#toml"

[[layers]]
  name = "lang#rust"

[[layers]]
  name = "lsp"
  filetypes = [
    "rust"
  ]
  [layers.override_cmd]
    rust = ["rls"]
...
...
...
Enter fullscreen mode Exit fullscreen mode

Catatan: plugin untuk TOML juga harus diaktifkan karena konfigurasi cargo menggunakan format serialisasi TOML.

Saat menjalankan Rust, akan diinstall paket-paket yang diperlukan secara otomatis. Setelah selesai instalasi, Vim / Neovim bisa digunakan untuk IDE Rust.

Neovim + SpaceVim untuk Rust

Visual Studio Code / VSCodium

Visual Studio Code (selanjutnya disebut VS Code adalah IDE generik yang dibuat oleh Microsoft. VS Code dirancang untuk memungkinkan adanya penambahan fasilitas melalui Extension. Daftar lengkap extensions bisa dilihat pada Extensions Marketplace.

VSCodium adalah versi VS Code tanpa telemetry. Telemetry adalah fasilitas dari VS Code yang mengumpulkan data dari pengguna untuk keperluan layanan yang lebih baik (setidaknya, definisinya mengatakan demikian). VS Code secara default mengaktifkan fasilitas telemetry. Bagian lainnya sama dengan VS Code sehingga pembahasan tetang VS Code juga berlaku untuk VSCodium. Selanjutnya, keduanya akan disebut dengan VS Code saja.

Instalasi VS Code / VSCodium

Untuk instalasi VS Code, cukup download dari download VS Code / (download VSCodium) dan kemudian ekstraksi hasil download tersebut. Untuk menjalankan VS Code, cukup jalankan code yang terdapat pada direktori hasil ekstraksi. Jika menggunakan VSCodium, jalankan codium yang terdapat pada direktori hasil ekstraksi.

Extension untuk Rust

Extension untuk Rust di VS Code tersedia di marketplace - Rust. Untuk melakukan instalasi, tekan Ctl-P (Quick Open) dan masukkan perintah untuk instalasi berikut ini: ext install rust-lang.rust. Setelah itu, extension akan di-install:

Instalasi extension Rust di VS Code

Setelah itu, kita bisa menggunakan VS Code sebagai IDE Rust. Gunakan File - Open Folder untuk membuka proyek Rust.

VS Code - Rust in Action

Eclipse

Eclipse Foundation juga mempunyai proyek yang didedikasikan untuk membuat IDE Rust dengan basis IDE Eclipse untuk membangun aplikasi menggunakan Rust. Untuk memperoleh software ini, silahkan akses ke Web dari proyek Eclipse Corrosion. Sebagai informasi, sampai saat artikel ini ditulis, Eclipse Corrosion masih berstatus Eclipse Incubation, artinya belum menjadi proyek utama, masih masa inkubasi. Hal ini perlu diperjelas supaya memahami dukungan dari Eclipse Foundation terhadap IDE berbasis Eclipse ini.

Untuk menggunakan Eclipse Corrosion, lihat terlebih dahulu versi terbaru dari Eclipse Corrosion di https://projects.eclipse.org/projects/tools.corrosion. Setelah itu, download Eclipse Corrosion dari https://download.eclipse.org/corrosion/releases/latest/products/. Kelak, jika sudah tidak berada di posisi inkubasi, Eclipse Corrosion akan bisa diambil dari download utama Eclipse.

Catatan: untuk menggunakan Eclipse, setidaknya harus memiliki JRE (Java Runtime Environment) versi 8.

Setelah itu, ekstrak hasil download:

$ tar -xvf eclipseide-rust-1.2.1-linux.gtk.x86_64.tar.gz 
eclipse/
eclipse/p2/
eclipse/p2/org.eclipse.equinox.p2.engine/
eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/
eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/CorrosionIDE.profile/
eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/CorrosionIDE.profile/1623857155371.profile.gz
eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/CorrosionIDE.profile/.lock
eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/CorrosionIDE.profile/.data/
eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/CorrosionIDE.profile/.data/org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions/
eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/CorrosionIDE.profile/.data/org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions/jvmargs
eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/CorrosionIDE.profile/.data/.settings/
eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/CorrosionIDE.profile/.data/.settings/org.eclipse.equinox.p2.artifact.repository.prefs
eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/CorrosionIDE.profile/.data/.settings/org.eclipse.equinox.p2.metadata.repository.prefs
eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/CorrosionIDE.profile/1623857155392.profile.gz
...
...
...
eclipse/plugins/org.eclipse.corrosion_1.2.1.202106081156.jar
eclipse/icon.xpm
eclipse/eclipse
eclipse/.eclipseproduct
eclipse/readme/
eclipse/readme/readme_eclipse.html
eclipse/dropins/
eclipse/eclipse.ini
eclipse/configuration/
eclipse/configuration/org.eclipse.equinox.simpleconfigurator/
eclipse/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info
eclipse/configuration/config.ini
eclipse/configuration/org.eclipse.update/
eclipse/configuration/org.eclipse.update/platform.xml
$
Enter fullscreen mode Exit fullscreen mode

Hasil ekstrak adalah direktori eclipse dengan isi sebagai berikut:

$ cd eclipse/
$ ls -la
total 376
drwxr-xr-x  8 zaky zaky   4096 Jun 16 22:25 ./
drwxr-xr-x  4 zaky zaky   4096 Sep 11 11:40 ../
-rw-r--r--  1 zaky zaky  84784 Jun 16 22:25 artifacts.xml
drwxr-xr-x  4 zaky zaky   4096 Jun 16 22:25 configuration/
drwxr-xr-x  2 zaky zaky   4096 Jun 16 22:25 dropins/
-rwxr-xr-x  1 zaky zaky  80072 Jun 12 04:14 eclipse*
-rw-r--r--  1 zaky zaky    821 Jun 16 22:25 eclipse.ini
-rw-r--r--  1 zaky zaky     61 Jun 12 03:06 .eclipseproduct
drwxr-xr-x 37 zaky zaky   4096 Jun 16 22:25 features/
-rwxr-xr-x  1 zaky zaky 140566 Jun 12 04:14 icon.xpm*
drwxr-xr-x  4 zaky zaky   4096 Jun 16 22:25 p2/
drwxr-xr-x 11 zaky zaky  32768 Jun 16 22:25 plugins/
drwxr-xr-x  2 zaky zaky   4096 Jun 16 22:25 readme/
$
Enter fullscreen mode Exit fullscreen mode

Untuk menjalankan Eclipse for Rust Developers, masuk ke direktori hasil ekstrak kemudian eksekusi
file eclipse sebagai berikut:

$ cd eclipse
$ ./eclipse
Enter fullscreen mode Exit fullscreen mode

Setelah splash screen, Eclipse akan menanyakan workspace tempat menyimpan berbagai proyek Rust. Isikan seperti yang anda kehendaki (bebas), setelah itu,
klik pada Launch, maka akan dimunculkan window utama dari Eclipse. Sebelum mulai menggunakan Eclipse for Rust, isikan Rust Preferences dengan memilih Window - Rust Preferences:

Rust Preferences

Setelah isian sesuai, kita bisa menggunakan Eclipse for Rust:

Window utama Eclipse for Rust

Discussion (2)

Collapse
satriyo profile image
Riyo Wicaksono

Thanks mas tutornya, walopun saya masih ga mudeng dr part 1-3 haha.

Collapse
oldstager profile image
Bambang Purnomosidi D. P. Author

lho kok sama :-D