Avatar ·

Que signifie l'opérateur r#""# en Rust et comment utiliser les littéraux de chaîne bruts ?

Bonjour ! J'ai commencé à apprendre Rust récemment et je suis tombé sur une construction incompréhensible dans le code de quelqu'un d'autre. Il y avait écrit quelque chose comme : ```rust let pattern = r#"^\\d+\\.\\d+\\.\\d+\\.\\d+$"#; let json = r#"{"name": "John", "age": 30}"#; ``` Je vois qu'il y a une lettre `r` avant la chaîne, puis les symboles `#"` et `"#`. Qu'est-ce que cela signifie ? Je sais qu'en Rust, les littéraux de chaîne sont désignés par des guillemets doubles `"..."`, et le symbole `\\` est utilisé pour l'échappement. Mais ici, il y a une sorte de magie avec `#`. Ce qui me déroute particulièrement, c'est qu'à l'intérieur de cette chaîne, il y a des guillemets doubles ordinaires. Dans une chaîne normale, j'aurais dû écrire `\"` pour les échapper, mais ici les guillemets sont tels quels. Et ces dièses `#` sur les bords — à quoi servent-ils ? Peut-on s'en passer ? J'ai essayé d'écrire simplement `r"..."`, mais le compilateur se plaint s'il y a des guillemets à l'intérieur de la chaîne. Avec `r#"..."#`, tout fonctionne. Pourquoi ? Et que se passe-t-il si j'ai besoin d'utiliser `"#` directement à l'intérieur de la chaîne ? Par exemple, si j'écris du code qui génère du JSON ou du