[ https://issues.apache.org/jira/browse/THRIFT-5314?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17235560#comment-17235560 ]
Allen George edited comment on THRIFT-5314 at 11/19/20, 4:02 PM: ----------------------------------------------------------------- I don't think that's necessary. You could have the same outcome by using something like: {noformat} pub enum RustEnum { Add = 1, Subtract = 2, Multiply = 3, Divide = 4, __Unknown(i32), } {noformat} After all, all we need is the ability to parse an unknown enum value on the wire into a variant that can be processed by the receiving code. If {{__Unknown}} is generated automatically the reading code can always populate it with the unrecognized value on the wire. was (Author: allengeorge): I don't think that's necessary. You could have the same outcome by using something like: {noformat} pub enum RustEnum { Add = 1, Subtract = 2, Multiply = 3, Divide = 4, __Unknown(i32), } {noformat} > Enum forward compatibility > -------------------------- > > Key: THRIFT-5314 > URL: https://issues.apache.org/jira/browse/THRIFT-5314 > Project: Thrift > Issue Type: Bug > Components: Rust - Compiler, Rust - Library > Affects Versions: 0.13.0 > Reporter: Remi Dettai > Priority: Major > > It seems that enums in the Rust implem are not forward compatible. As Thrift > enums are mapped 1:1 to Rust enum, if a newer Thrift definition adds a case > to an enum, an error will be returned when parsing the message. > Is this intended? Is there a workaround? > (We met this problem in the Rust parquet implem: > https://issues.apache.org/jira/browse/ARROW-10553) -- This message was sent by Atlassian Jira (v8.3.4#803005)