Rust Heavy 性能
- 作者仓库星标 0
- 作者仓库 skills-registry
Rust-Heavy Performance
Use this skill when a feature can become slow or memory-heavy. Prefer implementing heavy paths in src-tauri/ and keep the frontend thin.
Core rule
- If work is CPU-heavy, row-heavy, or repeatedly recomputed, do it in Rust.
- JavaScript/React should orchestrate UI state and rendering, not run bulk processing loops.
Rust-first implementation pattern
- Add or extend an async command in
src-tauri/src/commands.rs. - Keep query execution and pooling logic in
src-tauri/src/db.rsand related Rust modules. - Return a compact DTO to the frontend (already shaped for display).
- Call it from
src/data/repositories/using existinginvokepatterns. - Render in feature UI with virtualization for large result sets.
Memory efficiency guardrails
- Use bounded reads (
LIMIT, pagination, or chunked iteration), never unbounded materialization. - Avoid cloning large vectors/strings when references or incremental building is enough.
- Prefer streaming/chunked processing over collecting everything at once.
- Keep structs narrow for IPC responses; do not ship unused fields.
- Reuse pooled database connections; avoid ad hoc new clients per action.
Speed guardrails
- Push filtering, sorting, grouping, and aggregation down to SQL/Rust.
- Minimize Rust<->webview payload size; serialize only what UI needs now.
- Cache or memoize expensive Rust-side intermediate results only when reuse is likely and bounded.
- Use async command handlers; avoid blocking I/O in command paths.
Easy-to-implement defaults
- Start from existing command and repository patterns instead of inventing new data paths.
- Keep each command focused: one clear job, typed input, typed output.
- Introduce feature flags/options only after proving a real need.
- Keep frontend changes small: trigger command, handle loading/error, display bounded data.
Anti-patterns to avoid
- Doing large data transforms in React
useMemooruseEffect. - Returning huge raw row sets to the UI and shaping them in JavaScript.
- Recomputing heavy derived data on every render or keystroke.
- Mixing unrelated concerns into a single Rust command handler.
Review checklist
- Is the heavy work in Rust instead of JavaScript?
- Are reads and payloads explicitly bounded?
- Is memory growth controlled for worst-case input size?
- Is command/repository wiring following existing VeloxDB patterns?
- Does the UI virtualize large lists/tables and avoid unnecessary recomputation?
<!-- tomevault:4.0:skill_md:2026-05-23 -->Source: abeni16/veloxdb — distributed by TomeVault.
- 流狐分类
- 通用
- 作者声明 Agent
- 未找到明确声明;不据此推断已兼容或已测试
- 静态检查
- 88 / 100 · 启发式扫描,不代表运行安全
- 作者 / 版本 / 许可
- @tomevault-io · 未声明 license
- 流狐 Token 估算
- 低消耗
- 流狐接入估算
- 需简单配置
- 是否需要外部 API Key
- 未发现要求
- 检测到的系统要求
- 未声明
- 底层运行要求
- 未声明
- 检测到的文件与系统行为
-
- 只读
- Shell 执行
- 检测到的网络行为
- 仅限本地
- 安装命令数
- 无(仅作为资料)
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
作者没有在当前 SKILL.md 中定义固定输出样例。 If work is CPU-heavy, row-heavy, or repeatedly recomputed, do it in Rust. JavaScript/React should orchestrate UI state and rendering, not run bulk processing loops.
Add or extend an async command in src-tauri/src/commands.rs. Keep query execution and pooling logic in src-tauri/src/db.rs and related Rust modules. Return a compact DTO to the frontend (already shaped for display).
Use bounded reads (LIMIT, pagination, or chunked iteration), never unbounded materialization. Avoid cloning large vectors/strings when references or incremental building is enough. Prefer streaming/chunked processing over collecting everything at once.
Push filtering, sorting, grouping, and aggregation down to SQL/Rust. Minimize Rust<->webview payload size; serialize only what UI needs now. Cache or memoize expensive Rust-side intermediate results only when reuse is likely and bounded.
Start from existing command and repository patterns instead of inventing new data paths. Keep each command focused: one clear job, typed input, typed output. Introduce feature flags/options only after proving a real need.
Doing large data transforms in React useMemo or useEffect. Returning huge raw row sets to the UI and shaping them in JavaScript. Recomputing heavy derived data on every render or keystroke.
# Rust-Heavy Performance
Use this skill when a feature can become slow or memory-heavy. Prefer implementing heavy paths in `src-tauri/` and keep the frontend thin.
## Core rule
- If work is CPU-heavy, row-heavy, or repeatedly recomputed, do it in Rust.
- JavaScript/React should orchestrate UI state and rendering, not run bulk processing loops.
## Rust-first implementation pattern
1. Add or extend an async command in `src-tauri/src/commands.rs`.
2. Keep query execution and pooling logic in `src-tauri/src/db.rs` and related Rust modules.
3. Return a compact DTO to the frontend (already shaped for display).
4. Call it from `src/data/repositories/` using existing `invoke` patterns.
5. Render in feature UI with virtualization for large result sets.
## Memory efficiency guardrails
- Use bounded reads (`LIMIT`, pagination, or chunked iteration), never unbounded materialization.
- Avoid cloning large vectors/strings when references or incremental building is enough.
- Prefer streaming/chunked processing over collecting everything at once.
- Keep structs narrow for IPC responses; do not ship unused fields.
- Reuse pooled database connections; avoid ad hoc new clients per action.
## Speed guardrails
- Push filtering, sorting, grouping, and aggregation down to SQL/Rust.
- Minimize Rust<->webview payload size; serialize only what UI needs now.
- Cache or memoize expensive Rust-side intermediate results only when reuse is likely and bounded.
- Use async command handlers; avoid blocking I/O in command paths.
## Easy-to-implement defaults
- Start from existing command and repository patterns instead of inventing new data paths.
- Keep each command focused: one clear job, typed input, typed output.
- Introduce feature flags/options only after proving a real need.
… 作者原文负责流程事实;流狐只索引当前章节、要点、文件与命令。
章节 -> Core rule → Rust-first implementation pattern → Memory efficiency guardrails → Speed guardrails → Easy-to-implement defaults → Anti-patterns to avoid
要点 -> Use this skill when a feature can become slow or memory-heavy. · - If work is CPU-heavy, row-heavy, or repeatedly recomputed, do it in Rust. · 1. Add or extend an async command in src-tauri/src/commands.rs. · - Use bounded reads (LIMIT, pagination, or chunked iteration), never unbounded materialization. · - Push filtering, sorting, grouping, and aggregation down to SQL/Rust. · - Start from existing command and repository patterns instead of inventing new data paths. · - Doing large data transforms in React useMemo or useEffect. · - Is the heavy work in Rust instead of JavaScript?
文件/命令 -> src-tauri/ · src-tauri/src/commands.rs · src-tauri/src/db.rs · src/data/repositories/ · invoke · LIMIT · useMemo · useEffect
内容 SHA-256 -> 1b0de4f9a619
原文结构
适用与边界
原文中的明确线索
src-tauri/、src-tauri/src/commands.rs、src-tauri/src/db.rs、src/data/repositories/、invoke、LIMIT、useMemo、useEffect