Yes it is possible - we have done similar things in parquet-rs to generate Thrift files, using build.rs (see here <https://github.com/sunchao/parquet-rs/blob/f2f0993098bdeaa62a0790be18faac2f5bf2fe3b/build.rs>). Once the manual edits are not required we can explore that path.
On Tue, Nov 20, 2018 at 1:20 PM Krisztián Szűcs <szucs.kriszt...@gmail.com> wrote: > Auto generation sounds like a good idea, similarly like rust-bindgen > does it: https://rust-lang-nursery.github.io/rust-bindgen/tutorial-3.html > Of course it depends on the complexity of manual edits. > > We can still separate the crates later if that's desired. > > On Tue, Nov 20, 2018 at 6:39 PM Chao Sun <sunc...@uber.com.invalid> wrote: > > > I think I suggested this. The idea is to isolate the auto-generated code > > from the other source files, and also to isolate future changes due to > > updates on either format or flatbuffers versions. IMO this makes the repo > > cleaner and more organized. Of course, ideally we should auto-generate > > these files when compiling. > > > > On Mon, Nov 19, 2018 at 11:55 AM Wes McKinney <wesmck...@gmail.com> > wrote: > > > > > Could you explain why having a separate crate would be a good idea? > > > On Mon, Nov 19, 2018 at 2:40 PM Andy Grove <andygrov...@gmail.com> > > wrote: > > > > > > > > A question has been raised on this PR as to whether we should > publish a > > > > separate crate for the format/ipc generated code. I think there might > > be > > > > some merit in this and wanted to raise it here to see what everyone > > > thinks. > > > > > > > > This would mean having two directories under the rust directory ... > one > > > for > > > > arrow-format (or maybe the name should be arrow-ipc?) and one for the > > > main > > > > arrow crate. > > > > > > > > It is possible we might want other crates in the future e.g. > > > arrow-parquet > > > > or whatever. > > > > > > > > Andy. > > > > > > > > > > > > On Sat, Nov 17, 2018 at 10:04 AM Andy Grove <andygrov...@gmail.com> > > > wrote: > > > > > > > > > I have created a PR this morning that adds the generated > Flatbuffers > > > code > > > > > to the Rust implementation ( > > https://github.com/apache/arrow/pull/2986 > > > ). > > > > > > > > > > Just throwing these files into the repo doesn't add a ton of value > > > until > > > > > we use them for something, but it took some effort to generate them > > > (and > > > > > then fix a couple things by hand) so it seems useful to contribute > > > this. > > > > > The PR includes a brief README with the instructions for generating > > the > > > > > files. > > > > > > > > > > I have taken this week off for Thanksgiving so I actually have some > > > > > dedicated time to contribute to Arrow. I suppose my next step on > this > > > is to > > > > > write a test that can serialize some data and then de-serialize it > > > again. > > > > > > > > > > Andy. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Sun, Nov 4, 2018 at 11:11 AM Wes McKinney <wesmck...@gmail.com> > > > wrote: > > > > > > > > > >> hi Andy, > > > > >> > > > > >> AFAIK in the other implementations, the Flatbuffers serialization > is > > > > >> an implementation detail of offering support for the columnar IPC > > > > >> protocol (which in turn depends on the columnar data structures, > > > > >> memory management, etc.). I'm not sure what a crate offering the > > > > >> Flatbuffers bindings alone would offer, outside of helping people > > > > >> create new Rust Arrow implementations, I guess. In any case, if > you > > > > >> wanted to do that, we would need to make a release first. > > > > >> > > > > >> - Wes > > > > >> On Sat, Nov 3, 2018 at 1:01 PM Andy Grove <andygrov...@gmail.com> > > > wrote: > > > > >> > > > > > >> > Brief update on this. I have now been able to use flatbuffers to > > > > >> generate > > > > >> > Rust code from the Arrow schema, and it compiles. In theory, > this > > > can be > > > > >> > published as a standalone "arrow-format" crate but I'm wondering > > > what > > > > >> the > > > > >> > plan should be here. > > > > >> > > > > > >> > I will start reviewing how this is handled in the other > > > implementations > > > > >> but > > > > >> > if anyone has suggestions, please let me know. > > > > >> > > > > > >> > Thanks, > > > > >> > > > > > >> > Andy. > > > > >> > > > > > >> > > > > > >> > > > > > >> > On Mon, Sep 3, 2018 at 9:08 PM Andy Grove < > andygrov...@gmail.com> > > > > >> wrote: > > > > >> > > > > > >> > > Flatbuffers now has support for Rust - the PR was just merged > in > > > the > > > > >> last > > > > >> > > couple days: > > > > >> > > > > > https://github.com/google/flatbuffers/tree/master/rust/flatbuffers > > > > >> > > > > > > >> > > I hope to find some time in the next week or two to start > > > > >> experimenting > > > > >> > > with this for Arrow IPC. > > > > >> > > > > > > >> > > Andy. > > > > >> > > > > > > >> > > On Tue, Jun 19, 2018 at 6:09 PM Andy Grove < > > andygrov...@gmail.com > > > > > > > > >> wrote: > > > > >> > > > > > > >> > >> The author of the Rust version of FlatBuffers is now working > > on a > > > > >> public > > > > >> > >> fork and seems to be making good progress. I just wanted to > > send > > > a > > > > >> quick > > > > >> > >> update on this since I am now back onto working on Arrow IPC > in > > > Rust > > > > >> (I'm > > > > >> > >> sure this is going to take quite a while though so don't want > > to > > > get > > > > >> > >> anyones hopes up too much). For anyone that is interested, > here > > > is > > > > >> the > > > > >> > >> FlatBuffers branch: > > > > >> https://github.com/rw/flatbuffers/tree/2018-02--rust > > > > >> > >> > > > > >> > >> Andy. > > > > >> > >> > > > > >> > >> > > > > >> > >> On Sat, May 19, 2018 at 4:05 PM Wes McKinney < > > > wesmck...@gmail.com> > > > > >> wrote: > > > > >> > >> > > > > >> > >>> Sorry to hear, it's a bit of a rough situation with > > Flatbuffers > > > and > > > > >> > >>> Rust. One possibility is to build an interface to the > > > Flatbuffers > > > > >> data > > > > >> > >>> via flatcc (https://github.com/dvidelabs/flatcc) -- I > wonder > > if > > > > >> these > > > > >> > >>> bindings are header-only like C++ and if that makes things > any > > > > >> easier > > > > >> > >>> for you. > > > > >> > >>> > > > > >> > >>> If you defined an API in Rust for reading and writing the > > Arrow > > > > >> > >>> metadata that does not expose any Flatbuffers-specific > > details, > > > then > > > > >> > >>> once there is a production-grade Rust implementation of > > > Flatbuffers, > > > > >> > >>> the implementation details could be swapped out without > > > disruption. > > > > >> > >>> > > > > >> > >>> > my recent attempts at contacting the author have been > > > unsuccessful > > > > >> > >>> > > > > >> > >>> Have you e-mailed the author directly or only pings on > GitHub? > > > Pings > > > > >> > >>> may not be making it to their inbox. > > > > >> > >>> > > > > >> > >>> Appreciate your efforts on this; I think we'll see a lot > more > > > work > > > > >> in > > > > >> > >>> data processing in Rust in the coming years. > > > > >> > >>> > > > > >> > >>> - Wes > > > > >> > >>> > > > > >> > >>> On Fri, May 18, 2018 at 9:21 AM, Andy Grove < > > > andygrov...@gmail.com> > > > > >> > >>> wrote: > > > > >> > >>> > Hi, > > > > >> > >>> > > > > > >> > >>> > Now that the refactor I've been working on has been > merged, > > > the > > > > >> next > > > > >> > >>> > priority for me personally with the Rust implementation is > > > > >> getting IPC > > > > >> > >>> and > > > > >> > >>> > integration testing working. > > > > >> > >>> > > > > > >> > >>> > Unfortunately the official Flatbuffers Rust version is not > > > > >> available > > > > >> > >>> yet > > > > >> > >>> > and my recent attempts at contacting the author have been > > > > >> unsuccessful > > > > >> > >>> so I > > > > >> > >>> > have started working with this fork of Flatbuffers which > has > > > Rust > > > > >> > >>> support: > > > > >> > >>> > https://github.com/josephDunne/flatbuffers. > > > > >> > >>> > > > > > >> > >>> > I was able to generate code from Schema.fbs but it doesn't > > > > >> compile and > > > > >> > >>> I've > > > > >> > >>> > started filing issues and debugging this. > > > > >> > >>> > > > > > >> > >>> > Working with this fork isn't ideal but I don't see what > > other > > > > >> choice I > > > > >> > >>> > have, other than just waiting for the official project to > > > support > > > > >> Rust. > > > > >> > >>> > > > > > >> > >>> > I'm interested to hear if anyone has any alternate > > > suggestions. I > > > > >> know > > > > >> > >>> it > > > > >> > >>> > would be possible to wrap C code but I'd like to keep the > > Rust > > > > >> > >>> > implementation as a pure Rust project if possible. > > > > >> > >>> > > > > > >> > >>> > Thanks, > > > > >> > >>> > > > > > >> > >>> > Andy. > > > > >> > >>> > > > > >> > >> > > > > >> > > > > > > > > > > >