You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Andrew Lamb (Jira)" <ji...@apache.org> on 2020/10/26 14:58:00 UTC

[jira] [Commented] (ARROW-10390) [Rust] [Parquet] Regression Can not implement custom ParquetWriter because `TryClone` is not publically exported

    [ https://issues.apache.org/jira/browse/ARROW-10390?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17220758#comment-17220758 ] 

Andrew Lamb commented on ARROW-10390:
-------------------------------------

Here is what happens if you try and use `TryClone`: 

{code}
-*- mode: compilation; default-directory: "~/Software/delorean/" -*-
Compilation started at Mon Oct 26 10:56:43

cd /Users/alamb/Software/delorean  && cargo clippy --all-targets --workspace -- -D warnings
    Blocking waiting for file lock on build directory
    Checking delorean_parquet v0.1.0 (/Users/alamb/Software/delorean/delorean_parquet)
    Checking delorean_storage v0.1.0 (/Users/alamb/Software/delorean/delorean_storage)
error[E0603]: module `util` is private
  --> delorean_parquet/src/writer.rs:11:5
   |
11 |     util::io::TryClone,
   |     ^^^^ private module
   |
note: the module `util` is defined here
  --> /Users/alamb/.cargo/git/checkouts/arrow-3a9cfebb6b7b2bdc/7155cd5/rust/parquet/src/lib.rs:39:1
   |
39 | mod util;
   | ^^^^^^^^^

{code}

> [Rust] [Parquet] Regression Can not implement custom ParquetWriter because `TryClone` is not publically exported
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: ARROW-10390
>                 URL: https://issues.apache.org/jira/browse/ARROW-10390
>             Project: Apache Arrow
>          Issue Type: Bug
>            Reporter: Andrew Lamb
>            Assignee: Andrew Lamb
>            Priority: Major
>
> As of this commit
> https://github.com/apache/arrow/commit/7155cd5488310c15d864428252ca71dd9ebd3b48
> I don't think it is possible for a user of the arrow trait to implement a custom Parquet writer anymore. Specifically, theParquetWriter trait requires `TryClone` implemented,  https://github.com/apache/arrow/blob/master/rust/parquet/src/file/writer.rs#L117-L118
> {code}
> pub trait ParquetWriter: Write + Seek + TryClone {}
> impl<T: Write + Seek + TryClone> ParquetWriter for T {}
> /// A serialized implementation for Parquet [`FileWriter`].
> /// See documentation on file writer for more information.
> pub struct SerializedFileWriter<W: ParquetWriter> {
> {code}
> but `TryClone` is can not be used. It is a `pub` trait:
> https://github.com/apache/arrow/blob/master/rust/parquet/src/util/io.rs#L28-L32
> {code}
> /// TryClone tries to clone the type and should maintain the `Seek` position of the given
> /// instance.
> pub trait TryClone: Sized {
>     /// Clones the type returning a new instance or an error if it's not possible
>     /// to clone it.
>     fn try_clone(&self) -> Result<Self>;
> }
> {code}
> But the module it is (util.io) in is not marked as `pub`: https://github.com/apache/arrow/blob/master/rust/parquet/src/lib.rs#L39
> ```
>  #[macro_use]
> mod util;
> #[cfg(any(feature = "arrow", test))]
> pub mod arrow;
> pub mod column;
> pub mod compression;
> mod encodings;
> pub mod file;
> pub mod record;
> pub mod schema;
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)