8 个版本 (4 个重大变更)

0.5.0 2022 年 1 月 25 日
0.4.0 2022 年 1 月 14 日
0.3.3 2022 年 1 月 9 日
0.3.2 2021 年 12 月 22 日
0.1.0 2021 年 11 月 7 日

文件系统 中排名 1280

每月下载 24
nstd_audio 中使用

MIT 许可证

29KB
494 代码行

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 的 OS 支持。
        • alloc - Linux 的低级内存分配。
      • windows - Windows 的 OS 支持。
        • 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

来构建所有模块。

依赖关系

~0.3–25MB
~321K SLoC