Lignes
RowRecord
Chaque ligne est un RowRecord — un wrapper léger autour d'un HashMap<String, String>
avec un identifiant numérique :
Hauteur de ligne
Toutes les lignes partagent la même hauteur (model.row_height), définie à la création :
Une hauteur de ligne uniforme permet un accès O(1) : row_index = floor((y - header_height) / row_height).
Gouttière de numérotation
Une colonne fixe à gauche affiche les numéros de ligne (base 1). La largeur de la gouttière s'ajuste automatiquement selon le nombre de chiffres :
Survol de ligne
SetHoveredRow met en surbrillance la ligne sous le curseur :
La couleur de survol est contrôlée par --rs-grid-row-hover-bg (par défaut : surcouche semi-transparente).
Fonds de lignes alternés
Les lignes impaires utilisent la couleur de thème row_alt_bg pour un effet
de zébrure subtil. Personnalisable via --rs-grid-row-alt-bg.
Limites du nombre de lignes
Les indices de ligne sont des u64 (et non des usize), permettant jusqu'à ~9×10^14 lignes
avec une précision f64 complète. En WASM32, usize est limité à 32 bits (4 Go),
c'est pourquoi les indices de ligne utilisent u64 partout.
Au-delà de ~9×10^14 lignes, la précision f64 se dégrade (les entiers consécutifs deviennent indistinguables). Le code de hit-testing utilise une décomposition préservant la précision pour atténuer ce problème aux positions de défilement extrêmes.