<story><title>Rust DataBase Connectivity (RDBC)</title><url>https://andygrove.io/2020/01/rust-database-connectivity-rdbc/</url></story><parent_chain></parent_chain><comment><author>CodesInChaos</author><text>1. Can `Box&amp;lt;dyn RowAccessor&amp;gt;` even work like that, considering it&amp;#x27;s not object safe? My understanding is that adding the `Self:Sized` bound to `get` makes it compile, but also means that this method won&amp;#x27;t be available in a dynamic context, so the accessor you get from the rowset is completely useless.&lt;p&gt;2. Why do the accessors return results? IO errors should already happen when loading into the rowset. So at that point the only error the column accessor could run into is an out of bounds index, which is a panic worthy programming error.&lt;p&gt;3. Why do the accessors return options? Shouldn&amp;#x27;t that be absorbed into the generic `T` and only be used for nullable columns?&lt;p&gt;4. Why return owned accessors (boxes) instead of references?&lt;p&gt;5. Columnar datastorage without any low level access to the in-memory representation seems rather pointless, for a performance point of view. You can&amp;#x27;t access it with SIMD instructions and incur an indirect call overhead for each accessed element. Do you expect people to downcast the column accessor to a specific type for high performance access?&lt;p&gt;IMO abstracting over storage formats via dynamic dispatch is the wrong approach. The proper way is making all types take a generic a parameter for the format.</text></comment>
<story><title>Rust DataBase Connectivity (RDBC)</title><url>https://andygrove.io/2020/01/rust-database-connectivity-rdbc/</url></story><parent_chain></parent_chain><comment><author>pimeys</author><text>There are also other projects working solving similar problems.&lt;p&gt;The other is sqlx[0] serving as an asynchronous crate connecting to mysql and postgresql that validates the queries at compile time and is built as a new ground-up implementation using async&amp;#x2F;await and async-std.&lt;p&gt;And our project is quaint[1] which builds on top of existing tokio-based database crates giving a unified interface and a query builder.&lt;p&gt;[0] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;crates.io&amp;#x2F;crates&amp;#x2F;sqlx&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;crates.io&amp;#x2F;crates&amp;#x2F;sqlx&lt;/a&gt;
[1] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;crates.io&amp;#x2F;crates&amp;#x2F;quaint&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;crates.io&amp;#x2F;crates&amp;#x2F;quaint&amp;#x2F;&lt;/a&gt;</text></comment>