Tokio Async in Rust: tokio::join! vs tokio::spawn()
Rust’s Tokio async runtime provides two common ways to execute multiple async tasks concurrently: tokio::join! and tokio::spawn(). Choosing the right one is crucial for efficiency and proper task management. In this article, we’ll break down their differences, advantages, and when to use each with examples. Later on in the article well use JoinSet Understanding tokio::join! […]
Understanding await in Rust Async
Challenge: Race Condition & Mutex Fix 🏎️🔒 You’re building an async counter where multiple tasks try to update a shared number at the same time. But there’s a problem: Rust doesn’t allow shared mutable access without safety measures. Your Mission: Hints: When you use await, it pauses the task, not the thread. Here’s the distinction: […]
Creating a WebSocket Chat Room with Rust and Warp
Let me break down the process of creating this chat application into three phases, explaining the shared state aspect and unique challenges compared to typical Arc/Mutex tutorials. Phase 1: Setting Up the Basic Structure In Plain English: First, you’ll need to establish the foundational structure of your application. This means creating the basic server that […]
Working with as_str() and as_bytes()
Writing Data to a File When working with Rust, interacting with external APIs like OpenAI’s ChatGPT or writing data to files is common. In this article, we’ll address a couple of important questions regarding writing a Python script generated from the ChatGPT API to a file and converting data between types in Rust. Specifically, we’ll […]
Asynchronous Programming in Rust with join_all
Rust’s asynchronous capabilities are powerful, allowing developers to execute multiple tasks concurrently with ease. In this article, we’ll explore how to use the futures::future::join_all function along with tokio to manage multiple asynchronous tasks efficiently. Understanding join_all The join_all function, provided by the futures crate, enables us to execute multiple async tasks concurrently and collect their […]
OneOrMany implemented in Rust
https://github.com/0xPlaygrounds/rig/blob/main/rig-qdrant/examples/qdrant_vector_search.rs In the tuple |(d, embeddings)|, the components correspond to the values yielded by documents.into_iter() Thus: Example of OneOrMany Utility Type in Rust Breakdown: Example Output: In this case, OneOrMany makes it flexible to handle cases where you might have a single embedding or multiple embeddings, while keeping the code concise and readable.
WASM in Rust
Let’s make something more than the basic WASM example that adds 2 numbers together! https://doc.rust-lang.org/rustc/platform-support/wasm32-wasip1.html We’ll do a toy Bitcoin address validator. (Note, it’s not a real one, we’ll just use SHA256 twice). https://github.com/RGGH/tool_sigcheck 🚀 Rebuild & Run (WASI Preview 1) 1️⃣ Build for wasip1 2️⃣ Run with Wasmer 🔧 Fix: Add _start for WASI […]
Can Actix-Web Serve a .Wasm File with the Logic?
Yes, Actix-web can serve a .wasm file, but there are a few nuances when it comes to integrating the logic within the WebAssembly file. While serving static files like images and scripts is straightforward, serving and running a .wasm file containing logic requires a bit more setup. Here’s how you can serve and execute logic […]
Understanding HashMap and format! in Rust
Format How do you transform the contents of a HashMap into strings? And more specifically, how do you create multiple strings from a HashMap while using the format! macro? In this article, we’ll explore this in detail with a toy example. The Setup: A HashMap in Rust Let’s begin with a small HashMap containing some […]