[ https://issues.apache.org/jira/browse/THRIFT-5364?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Allen George updated THRIFT-5364: --------------------------------- Summary: Remove clippy::vec_box lint override (was: Remove clippy::box_vec lint override) > Remove clippy::vec_box lint override > ------------------------------------ > > Key: THRIFT-5364 > URL: https://issues.apache.org/jira/browse/THRIFT-5364 > Project: Thrift > Issue Type: Improvement > Components: Rust - Compiler > Reporter: Allen George > Priority: Minor > > Currently the rust code generator wraps types in a `Box` in two functions: > # {{to_rust_type}} > # {{render_type_sync_read}} > We do this only when a type is a {{typedef}} and > {{ttypedef->is_forward_typedef() == true}}. This can result in situations > where the following thrift ({{test/Recursive.thrift}}): > {noformat} > struct RecTree { > 1: list<RecTree> children > 2: i16 item > } > {noformat} > generates the following rust: > {noformat} > #[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] > pub struct RecTree { > pub children: Option<Vec<Box<RecTree>>>, > pub item: Option<i16>, > } > {noformat} > Clippy trips this code up with the following error: > {noformat} > /root/.cargo/bin/cargo fmt --all -- --check > /root/.cargo/bin/cargo clippy --all -- -D warnings > Checking kitchen-sink v0.1.0 (/thrift/src/lib/rs/test) > error: `Vec<T>` is already on the heap, the boxing is unnecessary. > --> src/recursive.rs:35:24 > | > 35 | pub children: Option<Vec<Box<RecTree>>>, > | ^^^^^^^^^^^^^^^^^ help: try: > `Vec<recursive::RecTree>` > | > = note: `-D clippy::vec-box` implied by `-D warnings` > = help: for further information visit > https://rust-lang.github.io/rust-clippy/master/index.html#vec_box > error: aborting due to previous error > error: could not compile `kitchen-sink`. > {noformat} > This happens because all container elements > ({{Vec}},{{BTreeSet}},{{BTreeMap}}) are automatically placed on the heap, so > a {{Box}} is an additional level of indirection. -- This message was sent by Atlassian Jira (v8.3.4#803005)