5个版本 (破坏性更新)

0.5.0 2022年1月25日
0.4.0 2022年1月15日
0.3.0 2021年12月8日
0.2.0 2021年11月29日
0.1.0 2021年11月7日

#588 in 操作系统

MIT许可证

4KB

crates.io

关于

NSTD是一个旨在跨平台且相对安全的库(任何可能失败的功能都会返回一个错误代码,指示它是否已成功或失败),同时拥有丰富的特性和功能。目标是拥有一个适用于任何平台、任何语言和任何用例的API。

平台支持

core模块可以在任何地方使用。它不依赖于任何其他库,包括标准库(除了头文件stddef.hstdint.h)。其他模块在大多数平台上都可以工作,并已测试过在Windows、macOS、Linux和Redox上构建。

模块概述

  • nstd - 基于 CFFI 的跨平台库。
    • alloc - 堆分配。
      • allocator - 自定义 vtable 结构,用于内存分配。
      • heap - 类似于Rust的Box。
    • audio - 音频I/O。
      • def - 常用的音频相关类型。
      • device - 音频I/O设备句柄。
      • host - 平台的音频宿主。
      • player - 音频播放器。
      • queue - 音频流的队列。
      • stream - 音频I/O流。
    • collections - 集合类型。
      • bit_mask - 具有小型内存占用的可定制位掩码。
      • rc - 通过引用计数器进行共享内存。
      • stack - 可增长的缩小堆栈数组类型。
    • core - 包含不需要操作系统即可使用的模块。
      • char_types - 特定于字符类型的函数。
      • cstr - C字符串检查。
      • def - 常用typedef。
      • float_types - 特定于浮点类型的函数。
      • int_types - 特定于整型类型的函数。
      • math - 低级数学。
      • platform - 平台识别。
      • pointer - 指针类型。
      • range - 范围类型。
      • slice - 内存视图。
      • str - UTF-8字符串切片类型。
    • env - 环境特定功能和识别。
    • events - 事件循环。
      • def - 事件系统使用的通用类型。
      • device_id - 识别设备的类型。
      • window_id - 识别窗口的类型。
    • fs - 文件系统。
      • file - 文件 I/O。
    • gl - 低级图形库。
      • buffer - GPU VRAM 缓冲区。
      • command - 设备命令。
        • buffer - GPU 命令缓冲区。
        • encoder - GPU 命令编码器。
      • def - 常用的图形相关类型。
      • device - 用于处理图形设备的模块。
        • handle - 图形设备的句柄。
        • info - 图形设备的信息。
      • instance - wgpu 的一个实例。
      • render - 渲染。
        • pass - 包含用于处理渲染通道的函数。
        • pipeline - 渲染管线。
      • shader - GPU 着色器程序。
        • module - 着色器模块。
      • state - 图形库的状态机。
      • surface - 与显示表面的交互。
        • config - 表面的配置。
        • texture - 表面纹理。
      • texture - 处理纹理的模块。
        • format - 纹理的数据格式。
        • view - 纹理视图。
    • gui - 图形用户界面库。
      • display - 显示/监视器句柄。
      • window - 窗口和表单。
    • image - 原始图像数据 I/O。
    • input - 键盘/鼠标输入。
      • key - 键盘类型。
      • mouse - 鼠标类型。
    • io - 标准I/O。
      • input_stream - 输入流类型。
      • io_stream - 输入输出流的类型。
      • output_stream - 输出流类型。
      • stderr - 标准错误流。
      • stdin - 标准输入流。
      • stdout - 标准输出流。
      • stream - 基础流类型。
    • math - 高级数学。
    • net - 网络。
      • tcp - TCP 网络。
      • udp - UDP 网络。
    • os - 操作系统特定功能。
      • linux - Linux 的操作系统支持。
        • alloc - Linux 的低级内存分配。
      • windows - Windows 的操作系统支持。
        • alloc - Windows 的低级内存分配。
          • heap - Windows 堆管理。
        • def - 常用的 Windows 自定义类型。
        • io - Windows 标准I/O。
        • thread - Windows 的线程支持。
    • proc - 进程管理。
    • rand - 随机值生成。
    • string - 动态大小的UTF-8编码字符串。
    • thread - 线程API。
    • time - 获取系统时间的库。
    • vec - 一个动态大小的数组。

如何构建

cargo build --release --features ""

在“--features”之后,在引号内,您可以用空格分隔每个模块,并以前缀“nstd_”开头,尽管nstd_os模块略有不同,它有自己的功能,如可以单独启用的nstd_os_alloc,而nstd_os不是必需的。nstd_core默认构建。如果您要将nstd构建为C库,还应该使用“clib”功能,以构建用于C ABI的模块。

示例

cargo build --release --features "clib nstd_alloc nstd_os nstd_os_io nstd_string"

或者您也可以使用

cargo build --release --all-features

来构建所有模块。

无运行时依赖

功能