LocalDNS.wtf
Advanced

Rust Setup

How to set up and build Rust modules for LocalDNS.wtf development.

Rust Setup Guide

Prerequisites

  1. Install Rust toolchain

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  2. Verify installation

    rustc --version
    cargo --version

Building Rust Modules

Build all Rust crates

cargo build --release

Build specific crate

cd crates/localdns-hosts
cargo build --release

Building FFI Bindings

The Rust modules are exposed to Node.js via napi-rs:

cd packages/rust-ffi
pnpm install
pnpm build

This generates native bindings, TypeScript definitions, and a Node.js module.

Development Workflow

  1. Make changes to Rust code

    cd crates/localdns-hosts
    # Edit src/lib.rs
    cargo build
  2. Rebuild FFI bindings

    cd packages/rust-ffi
    pnpm build
  3. Test in TypeScript

    cd packages/core
    pnpm build
    pnpm test

Cross-Platform Building

# macOS (Intel)
cargo build --release --target x86_64-apple-darwin

# macOS (Apple Silicon)
cargo build --release --target aarch64-apple-darwin

# Linux
cargo build --release --target x86_64-unknown-linux-gnu

Troubleshooting

Build fails with "napi-build not found"

cd packages/rust-ffi
pnpm install @napi-rs/cli

TypeScript can't find module

Make sure you've built the Rust FFI package:

cd packages/rust-ffi
pnpm build

Permission errors on Unix

The Rust implementation still requires appropriate permissions for /etc/hosts. Use sudo when needed.