Coverage Report

Created: 2026-04-29 06:53

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/lexical-util-1.0.7/src/algorithm.rs
Line
Count
Source
1
//! Simple, shared algorithms for slices and iterators.
2
3
use crate::num::Integer;
4
5
/// Copy bytes from source to destination.
6
///
7
/// This is only used in our compact and radix integer formatted, so
8
/// performance isn't the highest consideration here.
9
#[inline(always)]
10
#[cfg(any(feature = "write-floats", feature = "write-integers"))]
11
pub fn copy_to_dst<T: Copy, Bytes: AsRef<[T]>>(dst: &mut [T], src: Bytes) -> usize {
12
    let src = src.as_ref();
13
    dst[..src.len()].copy_from_slice(src);
14
15
    src.len()
16
}
17
18
/// Count the number of trailing characters equal to a given value.
19
#[inline(always)]
20
#[cfg(any(feature = "write-floats", feature = "write-integers"))]
21
pub fn rtrim_char_count(slc: &[u8], c: u8) -> usize {
22
    slc.iter().rev().take_while(|&&si| si == c).count()
23
}
24
25
/// Count the number of leading characters equal to a given value.
26
#[inline(always)]
27
#[cfg(any(feature = "write-floats", feature = "write-integers"))]
28
pub fn ltrim_char_count(slc: &[u8], c: u8) -> usize {
29
    slc.iter().take_while(|&&si| si == c).count()
30
}
31
32
/// Check to see if parsing the float cannot possible overflow.
33
///
34
/// This allows major optimizations for those types, since we can skip checked
35
/// arithmetic. Adapted from the rust [corelib][`core`].
36
///
37
/// [`core`]: <https://doc.rust-lang.org/1.81.0/src/core/num/mod.rs.html#1389>
38
#[inline(always)]
39
0
pub fn cannot_overflow<T: Integer>(length: usize, radix: u32) -> bool {
40
0
    length <= T::overflow_digits(radix)
41
0
}