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日

#10 in #nstd

每月下载量 24

MIT 许可证

13KB
201

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 typedefs。
        • 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

来构建所有模块。

无运行时依赖

功能