I am just beginning my rust journey.
I am trying to create a linked_list_allocator, but am having problems due to my lack of experience. Can anyone help?
My Cargo.toml looks like this:
[package]
name = "norris-test"
version = "0.1.0"
edition = "2021"
[dependencies]
linked_list_allocator = "0.10.5"
I then have src/main.rs as the sample code from the repo with some edits by me:
use linked_list_allocator::LockedHeap;
#[global_allocator]
static ALLOCATOR: LockedHeap = LockedHeap::empty();
pub fn init_heap() {
let mut byte1: u8 = 1; // Hardcoded as a byte at one
let mut byte2: u8 = 10; // hardcoded as a byte at 10
let heap_start = byte1; // I know this needs to be a mutable byte
let heap_end = byte2;
let heap_size = heap_end - heap_start;
unsafe {
ALLOCATOR.lock().init(heap_start, heap_size.into()); // Converted head_size into a byte using .into()
}
}
fn main() {
}
When I try to build the program, I get the following error:
david@Device-001-D-L:~/Documents/rust-projects/norris-test$ cargo build
Compiling norris-test v0.1.0 (/home/david/Documents/rust-projects/norris-test)
error[E0308]: mismatched types
--> src/main.rs:14:31
|
14 | ALLOCATOR.lock().init(heap_start, heap_size.into());
| ---- ^^^^^^^^^^ expected `*mut u8`, found `u8`
| |
| arguments to this method are incorrect
|
= note: expected raw pointer `*mut u8`
found type `u8`
note: method defined here
--> /home/david/.cargo/registry/src/index.crates.io-6f17d22bba15001f/linked_list_allocator-0.10.5/src/lib.rs:90:19
|
90 | pub unsafe fn init(&mut self, heap_bottom: *mut u8, heap_size: usize) {
| ^^^^
For more information about this error, try `rustc --explain E0308`.
error: could not compile `norris-test` (bin "norris-test") due to 1 previous error
The emphasis ---- ^^^^^^^^^^ expected
*mut u8, found
u8“ implies that there is a type mismatch but I am unsure of how to resolve this due to my noviceness.