• 0 Posts
  • 9 Comments
Joined 1 year ago
cake
Cake day: June 15th, 2023

help-circle

  • 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>.

    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.