Interessante.
Quasi ci stavo pensando, anche se il prezzo ovviamente è bello alto.
Poi ho visto che nessuna tastiera ha PageUp, PageDown e compagnia su tasti dedicati, ma sono invece sulle frecce direzionali e vanno usati assieme al tasto Fn.
Operazioni che dovrebbero essere accessibili con un solo dito hanno invece bisogno di entrambe le mani :/ Ho già fatto l'errore di comprare un Dell, che ha lo stesso difetto, e maledico la mia scelta ogni giorno.
l’account meglio su Codeberg / Gitea / Forgejo che sono 100% open rispetto a Gitlab o Github 😉
Gitea e Forgejo non offrono un servizio però, solo un'applicazione (se sbaglio linka pure, sono interessato).
Chiedere di mettere su e gestire un'infrastruttura del genere aperta al pubblico per condividere un programma mi sembra un po' esagerato. Per quanto sia divertente / soddisfacente / facile (opinione personale da uno che ha il suo server Gitea personale).
Devo esser sincero, inizialmente, leggendo la tua risposta, l’avevo intesa come un classico “io son meglio”, non volta ad apprendere, ragionare o migliorare la conoscenza di un neofita in Rust - modo in cui sembra trasparire tu mi consideri.
Allora vuol dire che non sono riuscito a trasmettere il tono giocoso e spensierato che avrei voluto. Mi spiace.
E forse ho frainteso il tuo messaggio originale in questo punto:
Questo codice è un macello!
Grazie, mi sono impegnato! Se hai notato bug, typo o cose insensate per favore commenta qui sotto!
In questa tua replica sembri molto meno propenso a ricevere commenti di quanto avessi letto nel messaggio originale.
Questo codice è un macello! /s
Lascerò a Clippy il compito di indicare tutti i problemi.
Aggiungi #![deny(clippy::pedantic)]
in cima ed esegui cargo clippy
.
Altri commenti in ordine sparso:
È decisamente poco idiomatico, anche se immagino sia stato scritto così apposta, dato che è indirizzato a chi il linguaggio non lo conosce.
Usare match
per estrarre esplicitamente gli errori è il modo sbagliato di usare Rust.
Quello giusto è usare l'operatore ?
, che lo fa in modo implicito (o al massimo if let
o let else
).
Non servono nemmeno anyhow o simili, le funzioni possono restituire Result<_, Box<dyn std::error::Error>>
.
Senza contare che match
crea un nuovo scope e un nuovo livello di indentazione, il codice sembra la bandiera del Nepal.
Per lo stesso motivo, usa std::fs::read_from_string
invece di creare un file esplicitamente.
Gli argomenti trng
e trg
della funzione pick_random
suonano identici, ma a giudicare dal tipo sono ben diversi.
Forse potremmo controllare response.status() e fare un bel match...
Meglio usare Response::error_for_status
.
C'è quasi sempre un modo migliore di un match
esplicito per gestire gli errori.
Creare diversi moduli
Prima di creare nuovi moduli penserei a creare nuove funzioni.
main()
fa decisamente troppe cose.
Infine:
Perché non su github?
Al momento non ho un account che posso usare per queste cose, mi dispiace!
Questa non è una buona scusa. Gli account su GitHub / Gitlab / SourceHut / BitBucket... non costano niente.
Però tutto sommato è stata una buona idea, e il codice in sé non è poi così malvagio per un principiante (o per qualcuno che scrive per principianti). Magari riesci a fare incuriosire qualcuno.