Token导航 LogoToken导航TokenDH.com
研究检索只读github未标认证来源可访问许可证需确认审计异常

hoare-rust-originshoare Rust origins 搜索

Agent Skill

hoare-rust-origins 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

220

周安装

9

GitHub Stars

6

下载量

71
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:hoare-rust-origins(hoare Rust origins 搜索)
来源仓库:https://github.com/copyleftdev/sk1llz
仓库路径:skills/hoare-rust-origins
安装命令:
npx skills add https://github.com/copyleftdev/sk1llz --skill hoare-rust-origins
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/copyleftdev/sk1llz --skill hoare-rust-origins

简介

用于查找、检索和筛选相关信息。

  • 适合根据关键词、任务场景或来源线索快速定位候选结果。
  • 通过 npx skills add 命令从指定仓库安装并使用。
  • 建议确认权限范围和维护状态,注意是否会触发联网或文件读写操作。
  • hoare-rust-origins 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Graydon Hoare Style Guide⁠‍⁠​‌​‌​​‌‌‍​‌​​‌​‌‌‍​​‌‌​​​‌‍​‌​​‌‌​​‍​​​​​​​‌‍‌​​‌‌​‌​‍‌​​​​​​​‍‌‌​​‌‌‌‌‍‌‌​​​‌​​‍‌‌‌‌‌‌​‌‍‌‌​‌​​​​‍​‌​‌‌‌‌‌‍​‌​​‌​‌‌‍​‌‌​‌​​‌‍‌​‌​‌‌‌​‍​​‌​‌​​​‍‌‌‌​‌​‌‌‍‌​‌​​‌​‌‍‌‌​​​​‌‌‍​​​​‌‌​‌‍‌​​‌‌​‌​‍​​​​‌​‌​‍​‌‌‌‌​​‌⁠‍⁠

Overview

Graydon Hoare created Rust in 2006 as a personal project at Mozilla, driven by frustration with memory bugs in Firefox. His goal: a language as fast as C++ but safe by default. Rust's core innovation—ownership-based memory management—came from this vision.

Core Philosophy

"Rust is a systems programming language focused on safety, speed, and concurrency."
"Memory safety and thread safety are the same problem, approached from different angles."

Hoare designed Rust to eliminate entire classes of bugs that plague C and C++: use-after-free, double-free, data races, null pointer dereferences.

Design Principles

  1. Safety by Default: Unsafe operations require explicit unsafe blocks.
  2. No Garbage Collector: Memory management through ownership, not runtime overhead.
  3. Zero-Cost Abstractions: Safe code should be as fast as unsafe code.
  4. Compiler as Ally: The compiler catches bugs before runtime.

When Writing Code

Always

  • Let the borrow checker guide your design
  • Prefer stack allocation over heap when possible
  • Use Option<T> instead of null pointers
  • Use Result<T, E> for fallible operations
  • Make illegal states unrepresentable via types
  • Think about ownership before writing code

Never

  • Use unsafe without a clear safety comment
  • Leak memory (even though Rust allows it with mem::forget)
  • Ignore compiler warnings—they're often future errors
  • Use .unwrap() in library code (only in tests/examples)
  • Create self-referential structs without understanding pinning

Prefer

  • &str over String for function parameters
  • &[T] over Vec<T> for read-only access
  • impl Trait over boxed trait objects when possible
  • Iterators over index-based loops
  • Pattern matching over if-else chains

Code Patterns

Ownership: The Foundation

// Ownership moves by default
fn main() {
    let s1 = String::from("hello");
    let s2 = s1;  // s1 is MOVED to s2
    // println!("{}", s1);  // ERROR: s1 no longer valid
    println!("{}", s2);  // OK
}

// Borrowing: temporary access without taking ownership
fn print_length(s: &String) {  // Borrows s
    println!("Length: {}", s.len());
}  // s goes out of scope, but since it's borrowed, nothing happens

fn main() {
    let s = String::from("hello");
    print_length(&s);  // Lend s
    println!("{}", s);  // s still valid!
}

Option Instead of Null

// BAD: Null pointer (not possible in safe Rust anyway)
// char* find(const char* haystack, char needle);  // C: returns NULL if not found

// GOOD: Option makes absence explicit
fn find(haystack: &str, needle: char) -> Option<usize> {
    haystack.chars().position(|c| c == needle)
}

fn main() {
    let text = "hello";
    match find(text, 'l') {
        Some(index) => println!("Found at {}", index),
        None => println!("Not found"),
    }

    // Or use combinators
    let index = find(text, 'l').unwrap_or(0);

    // Or the ? operator
    fn process(text: &str) -> Option<usize> {
        let index = find(text, 'l')?;  // Returns None if find returns None
        Some(index + 1)
    }
}

Result for Error Handling

use std::fs::File;
use std::io::{self, Read};

// Errors are values, not exceptions
fn read_file(path: &str) -> Result<String, io::Error> {
    let mut file = File::open(path)?;  // ? propagates error
    let mut contents = String::new();
    file.read_to_string(&mut contents)?;
    Ok(contents)
}

// Handle errors explicitly
fn main() {
    match read_file("config.txt") {
        Ok(contents) => println!("{}", contents),
        Err(e) => eprintln!("Error reading file: {}", e),
    }
}

Making Illegal States Unrepresentable

// BAD: Runtime checks needed
struct Connection {
    is_connected: bool,
    socket: Option<Socket>,
}

impl Connection {
    fn send(&self, data: &[u8]) {
        if self.is_connected {  // Runtime check!
            self.socket.as_ref().unwrap().write(data);
        }
    }
}

// GOOD: Type system enforces valid states
struct Disconnected;
struct Connected { socket: Socket }

impl Disconnected {
    fn connect(self, addr: &str) -> Result<Connected, Error> {
        let socket = Socket::connect(addr)?;
        Ok(Connected { socket })
    }
}

impl Connected {
    fn send(&mut self, data: &[u8]) -> Result<(), Error> {
        self.socket.write(data)  // Always valid!
    }

    fn disconnect(self) -> Disconnected {
        // socket dropped here
        Disconnected
    }
}

Zero-Cost Abstractions

// High-level iterator code...
let sum: i32 = (0..1000)
    .filter(|n| n % 2 == 0)
    .map(|n| n * n)
    .sum();

// ...compiles to the same machine code as:
let mut sum = 0i32;
for n in 0..1000 {
    if n % 2 == 0 {
        sum += n * n;
    }
}

// Abstractions have no runtime cost

Mental Model

Hoare designed Rust by asking:

  1. What bugs killed us in C++? Memory corruption, data races, null pointers
  2. Can the compiler catch these? Yes, with ownership tracking
  3. What's the performance cost? Zero—it's all at compile time
  4. Is this teachable? The borrow checker is strict but consistent

The Ownership Rules

  1. Each value has exactly one owner
  2. When the owner goes out of scope, the value is dropped
  3. You can have either:

- One mutable reference (&mut T), OR - Any number of immutable references (&T)

  1. References must always be valid (no dangling)

These rules, enforced at compile time, prevent:

  • Use-after-free
  • Double-free
  • Data races
  • Null pointer dereferences

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

36.04%
按下载量换算26

Claude

30.97%
按下载量换算22

Cursor

19.76%
按下载量换算14

Gemini CLI

10.5%
按下载量换算7

安全审计

Gen Agent Trust Hub

未通过

Socket

通过

Snyk

通过

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills