rust_italia | Unsorted

Telegram-канал rust_italia - RustLang Italia

202

Gruppo sul linguaggio Rust

Subscribe to a channel

RustLang Italia

Se il builder è fallibile dovresti avere un Result<T, E> nella funzione di build non un expect

Читать полностью…

RustLang Italia

Più che altro perchè mi devo abituare al design del codice Rust, i pattern in quanto tali li conosco (tra l'altro Refactoring guru èun'ottima risorsa a riguardo)

Читать полностью…

RustLang Italia

Si ha molti pattern utili 🙂

Читать полностью…

RustLang Italia

Guarda intanto mi dai un sito da mettere nei preferiti

Читать полностью…

RustLang Italia

(A parte usare i parametri di default)

Читать полностью…

RustLang Italia

Si normalmente se metti pub allora esponi pubblicamente il field in read e write

Читать полностью…

RustLang Italia

comunque il non_exhaustive viene usato anche nella std lib di rust in questo modo

Читать полностью…

RustLang Italia

si sarebbe un side effect dell'utilizzo principale

Читать полностью…

RustLang Italia

non_exhaustive da quel che leggo sembra essere un "guarda che questo potrebbe cambiare in futuro, per cui non dare per scontate cose che non lo saranno" più che "vietato istanziarlo fuori"

Читать полностью…

RustLang Italia

quindi hai la struct in read only al di fuori del crate

Читать полностью…

RustLang Italia

Si ok, ma non puoi accedere a shoes_color dopo facendo così al di fuori del module

Читать полностью…

RustLang Italia

https://play.rust-lang.org/?version=stable&amp;mode=debug&amp;edition=2021&amp;gist=550d5bab1962c53d1f2fa25a5ea703f4

Читать полностью…

RustLang Italia

o meglio il suo principale sembra essere differente

Читать полностью…

RustLang Italia

https://doc.rust-lang.org/reference/attributes/type_system.html#the-non_exhaustive-attribute

Читать полностью…

RustLang Italia

Ah certo fai a bene a chiarificarlo

Читать полностью…

RustLang Italia

Si refactoring.guru anche solitamente è buono, ma non mi piace come fanno il builder pattern: https://refactoring.guru/design-patterns/builder/rust/example#example-0--builders-car-rs

Usano unwrap nel build che fà crashare il programma in caso di errori, e poi non hai bisogno di un trait Builder, ti complica solo le cose imo

Читать полностью…

RustLang Italia

L'unica cosa che ho da ridire è che io preferisco usare la signature pub fn with_bar(mut self, bar: String) -> FooBuilder invece di pub fn name(mut self, bar: String) -> FooBuilder, ma sono piccole differenze in base alla tua preferenza personale

Читать полностью…

RustLang Italia

Comunque scusate ho fatto una domanda e poi non ho risposto per due giorni haha 😅👉👈
Mi ha assorbito LLVM

Читать полностью…

RustLang Italia

Prova a dare un'occhiata al builder pattern, secondo me fa proprio al caso tuo 😉
https://rust-unofficial.github.io/patterns/patterns/creational/builder.html

Читать полностью…

RustLang Italia

Uhm, quindi sono costretto a dover specificare dal nome, non posso avere un'interfaccia "unica"?

Читать полностью…

RustLang Italia

comunque nel mio esempio shoes_color non voleva essere un proprietà fantasma, era solo un esempio a caso, ma l'evitare di costruire cose al di fuori della loro modulo è legato a comportamenti interni che non vengono esplicitati fuori, per cui è facile avere property non pubbliche

Читать полностью…

RustLang Italia

per quello ho detto per un uso ancora più avanzato

Читать полностью…

RustLang Italia

poi il secondo è una conseguenza del primo perché il compilatore è conservatore

Читать полностью…

RustLang Italia

ok, ma anche qui stai usando una semantica diversa

Читать полностью…

RustLang Italia

con #[non_exhaustive] puoi fare in modo che tutta la struct sia pubblica, ma possa essere solo costruita all'interno del crate

Читать полностью…

RustLang Italia

Non sono da pc poi me lo vedo 😉

Читать полностью…

RustLang Italia

comunque se lasci una proprietà non pub probabilmente ottieni lo stesso effetto

Читать полностью…

RustLang Italia

non lo conoscevo, ma leggendo mi sembra serva ad altro

Читать полностью…

RustLang Italia

Ancora più avanzato, se vuoi rendere la struct pubblica ma non vuoi che si costruisca al di fuori del crate puoi usare non_exhaustive

Читать полностью…

RustLang Italia

la differenza è in prima battuta semantica

Читать полностью…
Subscribe to a channel