Blob Storage#7
Conversation
adamgracikowski
left a comment
There was a problem hiding this comment.
Bardzo fajnie, drobne uwagi/pytania w komentarzach ✔️
| /// Objects are compressed using Zlib for efficient storage. | ||
| pub struct ObjectStorage<'a> { | ||
| /// Provides access to repository paths such as the `objects` directory. | ||
| repo_layout: &'a dyn RepositoryLayout, |
There was a problem hiding this comment.
nie wiem w sumie co lepsze, czy tak jak masz, czy przy użyciu Box<dyn RepositoryLayout>?
There was a problem hiding this comment.
Też jeszcze nie znam na tyle rusta żeby powiedzieć co jest lepsze. Na pewno zalętą &'a dyn Trait jest to że nie trzeba nic alokować na stercie, nie ma dodatkowego kosztu jaki dodaje Box.
Z drugiej strony Box nie wymaga lifetimu i nie trzeba tak jak tutaj gwarantować że obiekt będzie żył dłużej niż struktura to spora zaleta, box sam zajmie się dealokacją we właściwym momencie. Ma też ownership obiektu co wydaje mi się że może być i plusem i minusem zależnie od przypadku, bo czasami możemy chcieć coś tylko pożyczyć na chwilę a nie oddawać.
There was a problem hiding this comment.
to najwyżej później zrobi się refaktor - fajnie gdybyśmy się zdecydowali na jeden sposób i tak robili dalej
możesz wybrać 🙂
There was a problem hiding this comment.
Raczej nie powinniśmy się skupiać na tym żeby wszędzie było to tak samo zrobione, po prostu trzeba się zastanowić czego potrzebujemy - czy wystarczy nam sama pożyczka (&'a dyn Trait) czy chcemy żeby struktura miała własność obiektu (Box).
Jak już mielibyśmy się na jedno decydować no to raczej Box bo dzięki niemu chociażby da się przechowywać różne implementacje jednego traita w kolekcji
Dodany blob storage, teraz przy dodawaniu pliku do indeksu oprócz hashowania tworzony jest blob, kompresowany i zapisywany w folderze objects.
Wydzieleniłem też
MutableRepositoryLayoutaby móc współdzielićRepositoryLayoutmiędzy wieloma wątkami