12个版本 (4个重大更新)

0.5.1 2022年1月25日
0.5.0 2022年1月25日
0.4.0 2022年1月15日
0.3.4 2022年1月9日
0.1.1 2021年11月24日

#875 in 图形API

每月 24 次下载

MIT 协议

43KB
844

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 标准输入输出。
        • 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

来构建所有模块。

依赖项

~24–37MB
~428K SLoC