INNER CODE UNIT · Rust
int_repr
RyanCodrai/turbovec · turbovec-python/src/lib.rs:141
fn int_repr(obj: &Bound<'_, PyAny>) -> String {
obj.str()
.map(|s| s.to_string())
.unwrap_or_else(|_| "<unprintable>".to_string())
}
/// Extract a non-negative count/size argument (`dim`, `bit_width`, `k`)
/// as `usize`. Values in the unsigned 64-bit range pass through untouched
/// (over-large-but-representable values stay subject to each method's own
/// range rules, e.g. `k` clamping and the core's `dim` cap). Integers
/// outside that range raise a `ValueError` naming the argument instead of
/// pyo3's bare `OverflowError`; non-integers raise `TypeError`.
fn extract_size(name: &str, obj: &Bound<'_, PyAny>) -> PyResult<usize> {
if let Ok(v) = obj.extract::<usize>() {
return Ok(v);
}
if is_py_int(obj) {
let msg = if obj.lt(0).unwrap_or(false) {