webnn-onnx-utils 0.1.1

Shared utilities for ONNX <-> WebNN conversion (types, op names, attrs, tensor data, etc.)
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
pub fn sanitize_for_webnn(onnx_name: &str) -> String {
    onnx_name.replace("::", "__").replace([':', '.', '/'], "_")
}

pub fn is_valid_webnn_identifier(name: &str) -> bool {
    let mut chars = name.chars();
    let Some(first) = chars.next() else {
        return false;
    };
    (first.is_ascii_alphabetic() || first == '_')
        && chars.all(|c| c.is_ascii_alphanumeric() || c == '_')
}

pub fn make_unique(base: &str, counter: &mut usize) -> String {
    let name = format!("{base}_{counter}");
    *counter += 1;
    name
}