in rust, create a linked list implementing the following trait and write tests to prove its efficiency.
pub trait List<T> {
/// Insert an item into a position in the list
fn insert(&mut self, index: usize, item: T);
/// Remove an item from the list at the provided position
fn remove(&mut self, index: usize) -> Option<T>;
/// Get the item at the provided position
/// Returns Option::None if not found
fn get(&self, index: usize) -> Option<&T>;
/// Search the list for the the first instance of the item.
/// If found return its position
fn find(&self, item: T) -> Option<usize>;
}
There are many resources out on the internet that can help you solve this. Many of which provide direct solutions. Remember this is all for fun and don't spoil it for others!