Rust Script

After my previous post I came across other ways to “quickly test rust code” Obvious being rust-script It is easy to install via cargo install rust-script (But I had it already installed. I think Espanso installed it, but not too sure) This may be better than rustc because one can define the dependencies in the “script” itself, like : #!/usr/bin/env rust-script //! Dependencies can be specified in the script file itself as follows: //!

Continue Reading »

Rust: When rustc Beats Cargo for quick trial code

Recently, I needed to test try some functionality (of getting user’s home directory) 1

Setting up a throw away project via cargo new is certainly possible but seemed overkill.

Continue Reading »

Rust: How to print Command Output

I was going thru struct Command in std::process 1

Obviously, I tried the very first code snippet in the rust playground. There is a very convinient ▸ to run the sample code.

The code ran without any errors.

But no output 🤔

Continue Reading »

Finally got Auto Complete working in Helix

I have been using Helix as an editor, not as an IDE. One of the USP of Helix is LSP support out of the box

Recently, I’ve been programming in rust.

Helix is also written in rust.

So I think it is natural that they would support rust LSP rust-analyzer and it does.

But I wasn’t getting auto completions 😞

Continue Reading »

Rust: Unit tests in a separate file

In rust, tests are written in the same file as the code. But I want to have the tests in a separate file. Conventionally, only the integration tests are written in files under tests folder. 1 I just wanted to have the unit tests in a separate file. So I created a file src/my_tests.rs and moved all the tests there. But cargo test kept saying running 0 tests Turns out, I’m not the only one.

Continue Reading »

Rust: Doubly Linked List

No, this is not a post about how to implement doubly linked list in rust. Or ir could be a very short post, since doubly linked list in built-in the std::collection as LinkedList Following functions are available: new : Creates new/empty linked list push_back : Adds an element to the list push_front : Since this is doubly linked list, element can be added at the beginning as well. Nice! pop_back and pop_front : Remove an element from the list clear : empty the entire list append : Append one list to another to make bigger list.

Continue Reading »

How to Turn Off Inlay Hints in VS Code

I initially tried to turn off the type hints via rust-analyzer extension setting, but that did not work 😞 Turns out it is very complicated (at least for me) documentation did not help 😞 Here is what worked for me. Thanks to SO 1 Open Command Palette Cmd+Shift+P Select Preferences: Open User Settings (JSON) from the drop down Add the following to existing settings Or create new one, if empty. You may need to enclose it within { } though.

Continue Reading »

How to pretty-print in Rust

Today, I accidentally found out that instead of using {:?} to debug print, if one just adds an extra # like {:#?} the variable is pretty printed. This makes sense for struct rather than simple data types like numbers or strings. The interesting part (for me at least) is how I “discovered” it 😄 When I was printing a struct (for debugging 🙈) VS Code (I think rust analyzer plugin) showed a popup how the struct does not implement Display 1

Continue Reading »

UV: Superfast pip replacement written in Rust

It is (almost) drop-in replacement for pip. We just need to invoke it as uv pip instead of pip How to install ? pipx install uv : This makes it available everywhere. Other alternatives are curl (recommended) and brew (on macOS) It is superfast I tried installing Django $ uv pip install Django Resolved 3 packages in 138ms Downloaded 3 packages in 2.53s Installed 3 packages in 228ms + asgiref==3.8.1 + django==5.

Continue Reading »

Rust: How non-primitive types are available in the default scope

In rust, str is a primitive type, but many non-primitive types are also in scope by default. e.g. We do not need to add use statement to use Vec - which is NOT a primitive type. It comes from std::vec So Vec::new() is really std::vec::Vec::new() Vec::new() works because Rust inserts this at the beginning of every module: use std::prelude::v1::*; This makes Vec (and String, Option and Result) available by default.

Continue Reading »