8个版本 (4个破坏性版本)

0.5.0 2022年1月25日
0.4.0 2022年1月15日
0.3.2 2022年1月9日
0.3.1 2021年12月13日
0.1.0 2021年11月7日

#392 in 操作系统


用于 2 个crate(通过 nstd_gui

MIT 协议

38KB
796

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 - 文件输入/输出。
    • 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 - 原始图像数据输入/输出。
    • input - 键盘/鼠标输入。
      • key - 键盘类型。
      • mouse - 鼠标类型。
    • io - 标准输入/输出。
      • 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

构建所有模块。

依赖项

~3.5–6.5MB
~135K SLoC