Skip to content

Borrowing packed fields is unsafe #109

Description

@armaniferrante

Compiling with anchor build gives the following warning that should be eliminated.

warning: borrow of packed field is unsafe and requires unsafe function or block (error E0133)
   --> programs/exchange/src/account.rs:275:56
    |
275 | #[derive(PartialEq, Default, Debug, AnchorDeserialize, AnchorSerialize)]
    |                                                        ^^^^^^^^^^^^^^^
    |
    = note: `#[warn(safe_packed_borrows)]` on by default
    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
    = note: for more information, see issue #46043 <https://github.com/rust-lang/rust/issues/46043>
    = note: fields of packed structs might be misaligned: dereferencing a misaligned pointer or even just creating a misaligned reference is undefined behavior
    = note: this warning originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info)

warning: 1 warning emitted

Zero copy uses #[repr(packed)]. Instead of borrowing, you can make a copy of the field.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions