spirv_std/
lib.rs

1#![no_std]
2#![cfg_attr(
3    target_arch = "spirv",
4    feature(
5        asm_const,
6        asm_experimental_arch,
7        core_intrinsics,
8        lang_items,
9        repr_simd,
10    )
11)]
12// BEGIN - Embark standard lints v0.4
13// do not change or add/remove here, but one can add exceptions after this section
14// for more info see: <https://github.com/EmbarkStudios/rust-ecosystem/issues/59>
15#![deny(unsafe_code)]
16#![warn(
17    clippy::all,
18    clippy::await_holding_lock,
19    clippy::char_lit_as_u8,
20    clippy::checked_conversions,
21    clippy::dbg_macro,
22    clippy::debug_assert_with_mut_call,
23    clippy::doc_markdown,
24    clippy::empty_enum,
25    clippy::enum_glob_use,
26    clippy::exit,
27    clippy::expl_impl_clone_on_copy,
28    clippy::explicit_deref_methods,
29    clippy::explicit_into_iter_loop,
30    clippy::fallible_impl_from,
31    clippy::filter_map_next,
32    clippy::float_cmp_const,
33    clippy::fn_params_excessive_bools,
34    clippy::if_let_mutex,
35    clippy::implicit_clone,
36    clippy::imprecise_flops,
37    clippy::inefficient_to_string,
38    clippy::invalid_upcast_comparisons,
39    clippy::large_types_passed_by_value,
40    clippy::let_unit_value,
41    clippy::linkedlist,
42    clippy::lossy_float_literal,
43    clippy::macro_use_imports,
44    clippy::manual_ok_or,
45    clippy::map_err_ignore,
46    clippy::map_flatten,
47    clippy::map_unwrap_or,
48    clippy::match_on_vec_items,
49    clippy::match_same_arms,
50    clippy::match_wildcard_for_single_variants,
51    clippy::mem_forget,
52    clippy::mismatched_target_os,
53    clippy::mut_mut,
54    clippy::mutex_integer,
55    clippy::needless_borrow,
56    clippy::needless_continue,
57    clippy::option_option,
58    clippy::path_buf_push_overwrite,
59    clippy::ptr_as_ptr,
60    clippy::ref_option_ref,
61    clippy::rest_pat_in_fully_bound_structs,
62    clippy::same_functions_in_if_condition,
63    clippy::semicolon_if_nothing_returned,
64    clippy::string_add_assign,
65    clippy::string_add,
66    clippy::string_lit_as_bytes,
67    clippy::string_to_string,
68    clippy::todo,
69    clippy::trait_duplication_in_bounds,
70    clippy::unimplemented,
71    clippy::unnested_or_patterns,
72    clippy::unused_self,
73    clippy::useless_transmute,
74    clippy::verbose_file_reads,
75    clippy::zero_sized_map_values,
76    future_incompatible,
77    nonstandard_style,
78    rust_2018_idioms
79)]
80// END - Embark standard lints v0.4
81// crate-specific exceptions:
82#![allow(
83    // Needed for `asm!`.
84    unsafe_code,
85    // We deblierately provide an unimplemented version of our API on CPU
86    // platforms so that code completion still works.
87    clippy::unimplemented,
88)]
89#![warn(missing_docs)]
90#![doc = include_str!("../README.md")]
91
92/// Public re-export of the `spirv-std-macros` crate.
93#[macro_use]
94pub extern crate spirv_std_macros as macros;
95pub use macros::spirv;
96
97pub mod arch;
98pub mod byte_addressable_buffer;
99pub mod float;
100pub mod image;
101pub mod integer;
102pub mod memory;
103pub mod number;
104pub mod ray_tracing;
105mod runtime_array;
106mod sampler;
107pub mod scalar;
108pub(crate) mod sealed;
109pub mod vector;
110
111pub use self::sampler::Sampler;
112pub use crate::macros::Image;
113pub use byte_addressable_buffer::ByteAddressableBuffer;
114pub use num_traits;
115pub use runtime_array::*;
116
117pub use glam;
118
119#[cfg(all(not(test), target_arch = "spirv"))]
120#[panic_handler]
121fn panic(_: &core::panic::PanicInfo<'_>) -> ! {
122    loop {}
123}
124
125#[cfg(all(not(test), target_arch = "spirv"))]
126#[lang = "eh_personality"]
127extern "C" fn rust_eh_personality() {}
128
129// See: https://github.com/rust-lang/rust/issues/84738
130#[doc(hidden)]
131/// [spirv_std_types]
132pub fn workaround_rustdoc_ice_84738() {}
133
134#[doc(hidden)]
135pub fn debug_printf_assert_is_type<T>(ty: T) -> T {
136    ty
137}
138
139#[doc(hidden)]
140pub fn debug_printf_assert_is_vector<
141    TY: crate::scalar::Scalar,
142    V: crate::vector::Vector<TY, SIZE>,
143    const SIZE: usize,
144>(
145    vec: V,
146) -> V {
147    vec
148}