You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@arrow.apache.org by "David Kegley (Jira)" <ji...@apache.org> on 2020/02/04 18:30:00 UTC
[jira] [Created] (ARROW-7768) Implement Length and TryClone traits
for Cursor> in reader.rs
David Kegley created ARROW-7768:
-----------------------------------
Summary: Implement Length and TryClone traits for Cursor<Vec<u8>> in reader.rs
Key: ARROW-7768
URL: https://issues.apache.org/jira/browse/ARROW-7768
Project: Apache Arrow
Issue Type: Improvement
Components: Rust
Reporter: David Kegley
Currently Length and TryClone are implemented for Cursor<&'a [u8]> in src/file/reader.rs
Attempting to create a cursor from a Vec<u8>
{code:java}
fn test_cursor_and_file_has_the_same_behaviour() {
let mut buf: Vec<u8> = Vec::new();
get_test_file("alltypes_plain.parquet")
.read_to_end(&mut buf)
.unwrap();
let cursor = Cursor::new(buf.as_slice());
...
{code}
results in:
{code:java}
`buf` does not live long enough
borrowed value does not live long enoughrustc(E0597)reader.rs(681, 34): borrowed value does not live long enoughreader.rs(681, 34): argument requires that `buf` is borrowed for `'static`reader.rs(691, 5): `buf` dropped here while still borrowed
{code}
Implementing Length and TryClone for Cursor<Vec<u8>> would allow for:
{code:java}
fn test_cursor_and_file_has_the_same_behaviour() {
let mut buf: Vec<u8> = Vec::new();
get_test_file("alltypes_plain.parquet")
.read_to_end(&mut buf)
.unwrap();
let cursor = Cursor::new(buf);
let read_from_cursor = SerializedFileReader::new(cursor).unwrap();
...
{code}
Otherwise, buf: Vec<u8> must be declared static in order to initialize a SerializedFileReader from a Cursor.
I'm new to rust so perhaps this is the intended behavior, but if not I'm happy to submit a PR for this
--
This message was sent by Atlassian Jira
(v8.3.4#803005)