Solana: Argument type BN is assignable to parameter of type u64
Here’s a sample article based on your code snippet:
Error Message Analysis: Solana Vote App Test File
When attempting to initialize the poll struct in a test file for a Solana vote app, a common error is encountered. The issue arises from an attempt to assign an argument type as a BN (Big Number) value to a parameter of type u64. In this article, we will dissect the code and explore the possible causes.
Code Analysis

The provided test file snippet contains the following lines:
#![allow(clippy::result_large_err)]
// Attempting to initialize the poll struct with BN argument
#[test]
fn test_poll_init() {
// ...
let result = poll.init();
}
Notice that BN is being used as an argument in the init() function of the poll struct. However, this type alias does not correspond to a valid u64 value.
Possible Causes
Several factors could be contributing to this error:
- Type Incompatibility: The
BNtype provided by thesolana-type-aliascrate might not be compatible with theu64parameter of thepollstruct.
- Missing Import or Definition
: Ensure that the
u64type is properly imported and defined in the test file.
- Incorrect Usage of Type Aliases: The
BNtype alias should be used within a context where it can be safely inferred as au64. If not, consider using a more suitable type for your use case.
Suggested Solution
To resolve this issue, ensure that:
- You have imported the necessary types from the
solana-type-aliascrate.
- The
BNtype alias is correctly defined and accessible within the test file.
- You are using the correct syntax to assign an argument of type
u64to a parameter of thepollstruct.
Here’s an updated example:
#![allow(clippy::result_large_err)]
use solana_type_alias::{BN, u64};
#[test]
fn test_poll_init() {
// ...
let poll = Poll::new();
let result = poll.init();
}
In this revised example, u64 is imported from the solana-type-alias crate and used as a parameter of type u64 in the init() function.
Conclusion
The error message indicates that there was an attempt to assign a BN value with a different type (u64) to a parameter of type u64. By analyzing the code, it becomes clear that the issue arises from incorrect usage or importation of types. To resolve this, ensure that you are using the correct types and syntax within your test file.
Best Practice
To avoid similar issues in the future:
- Verify that the
BNtype alias is properly imported.
- Ensure that the
u64parameter of thepollstruct has access to a validu64value.
- Use the correct syntax to assign an argument of type
u64to a parameter of typeu64.
By following these guidelines, you can write more robust and error-free test code for your Solana vote app.

Bir yanıt yazın