之前花了不少時間在goland上跑起leetcode plugin,需要一些設定才可以讓整個goland跑起來。現在多了一個Rust可以玩解題,那我們首先還是要先把整個環境搭起來啦!
需要條件
- CLion。官方Rust套件是比較prefer CLion,我不太確定其他的JetBrains系列IDE能不能跑,反正我是用CLion跑起來就是了。
- Cargo/rustc 這在裝官方的rust套件應該就已經裝上去了。如果你不知道這是啥的話,先把rust學熟在想著用rust解題吧….
- IntelliJ Rust Plugin,雖然官方建議用CLion跑,不過看這名字….應該可以在IntelliJ跑起來?
- LeetCode Editor or LeetCode Editor Pro ,兩者其實差異不大,只差在後者login比較方便,前者要去找session ID。我是覺得他對我幫助很大,我就付費支持啦。
至於怎麼在CLion裡面裝plugin? 比較簡單的方法是cmd+,
選plugins
,在這裡把這兩個裝好吧
設定
給他一個獨立的專案吧
首先先開一個給leetcode用的專案,比方說LeetCodeRust
。這很重要,因為LeetCode Editor
原始的設定其實會把code放在tmp裡面,這會導致你之後會丟失你以前submit的東西。你喜歡用cargo init
還是請CLion代勞都不影響,反正就是弄一個專案起來就對了。
按下cmd+,
打開preference,找LeetCode Editor的設定:
先把URL從leetcode.cn
改成leetcode.com
,把CodeType改成 Rust
,至於login name/password倒是不用改,因為login….用不到,那是給cn用的。
接下來把TempFilePath改到Rust專案的目錄底下。這個目錄設定下去以後,我們要的原始檔目錄將會是 src/leetcode/editor/en
。
接下來選Custom
頁籤,勾選Custom Template
,然後選Rust,把他改成這樣。
首先,FileName改leetcode_ $!{q.frontendQuestionId}
會讓他產生leetcode_<問題ID>.rs
這個檔案當作工作檔,而不是預設的[<問題ID>]問題英文.rs
這種無法被rust mod關鍵字讀取的東西。再來,我們對原始碼也要做一些修改,這些修改尤其是test的部分,可以讓你在同一個檔案裡面很輕易地測試你寫的東西,不用upload到leetcode才能測。
然後我們在src/leetcode/editor/en
底下建立一個base.rs
,裡面大概長這樣:
struct Solution;
最後,我們修改cargo.toml,增加一個lib的build target,增加完畢以後記得在Cargo頁籤refresh
[lib]
name = "leetcode"
path = "src/leetcode/editor/en/base.rs"
Cargo頁籤refresh後會多一個target
好啦,現在所有都準備好啦,我們來解個題吧。
Two Sum
我們來選一個最經典的Two Sum吧,先Login後refresh題庫,可以看到這樣:
我們雙擊Two Sum,可以發現他幫我們增加了一個檔案
且慢,你會發現test無法自動被偵測執行,而上面會有有一行File is not included in moduel tree, analysis is not available
,勇敢地按下旁邊的 Attach file to base.rs
吧,你會發現base.rs
多一行 mod leetcode_1
。
恭喜,你已經可以正常的使用了,而且也有現成的測試模組(外加自動偵測的run)可以來測試的你的commit了!
當然,你也能正常的submit code for verdict,have fun!