The Item
represents the base for both File
and Directory
. It contains functions to obtain basic information like
the name, creation
date, as well as metadata such as the size and description of the Item
and functions to obtain the reference
for
either
File
or Directory
and rename the Item
.
Both File
and Directory
can be converted into an Item
due to it being the base.
use warp::constellation::{
directory::Directory,
file::File,
item::Item
};
fn main() {
let file = File::new("test.txt");
let directory = Directory::new("test.txt");
let file_item = Item::from(file);
let directory_item = Item::from(directory);
assert_eq!(file_item.is_file(), true);
assert_eq!(file_item.is_directory(), false);
assert_eq!(directory_item.is_directory(), true);
assert_eq!(directory_item.is_file(), false);
}
You can obtain a reference of File
or Directory
from an Item
.
use warp::constellation::{
directory::Directory,
file::File,
item::Item
};
fn main() {
{
let file = File::new("test.txt");
let directory = Directory::new("test.txt");
let file_item = Item::from(file.clone());
let directory_item = Item::from(directory.clone());
assert_eq!(file_item.get_file(), Ok(&file));
assert_eq!(directory_item.get_directory(), Ok(&directory));
}
{
//You can also obtain a mutable reference of `File` or `Directory from `Item`
let mut file = File::new("test.txt");
let mut directory = Directory::new("test.txt");
let mut file_item = Item::from(file.clone());
let mut directory_item = Item::from(directory.clone());
assert_eq!(file_item.get_file_mut(), Ok(&mut file));
assert_eq!(directory_item.get_directory_mut(), Ok(&mut directory));
}
}
use warp::constellation::{
file::File,
item::Item
};
fn main() {
let file = File::new("test.txt");
let file_item = Item::from(file);
assert_eq!(file_item.name(), "test.txt");
}
use warp::constellation::{
file::File,
item::Item
};
fn main() {
let mut file = File::new("test.txt");
file.set_description("Test File");
let file_item = Item::from(file);
assert_eq!(file_item.description(), "Test File");
}
use warp::constellation::{
file::File,
item::Item
};
fn main() {
let mut file = File::new("test.txt");
file.set_size(100);
let file_item = Item::from(file);
assert_eq!(file_item.size(), 100);
}
You can also obtain the size of a Directory
use warp::constellation::{
file::File,
directory::Directory,
item::Item
};
fn main() {
let mut file0 = File::new("test.txt");
file.set_size(100);
let mut file1 = File::new("test.txt");
file.set_size(100);
let mut directory = Directory::new("Test Directory");
directory.add_item(file0).unwrap();
directory.add_item(file1).unwrap();
let directory_item = Item::from(directory);
assert_eq!(directory_item.size(), 200);
}
Note, Item::set_size
can only be used if its value is Item::File
, otherwise it would return an ItemNotFile
error
use warp::constellation::{
directory::Directory,
file::File,
item::Item
};
fn main() {
let file = File::new("test.txt");
let dir = Directory::new("Test Directory");
let mut file_item = Item::from(file);
let mut dir_item = Item::from(dir);
assert_eq!(file_item.set_size(100).is_ok(), true);
assert_eq!(dir_item.set_size(100).is_ok(), false);
}
use warp::constellation::{
file::File,
item::Item
};
fn main() {
let file = File::new("test.txt");
let mut file_item = Item::from(file);
file_item.set_description("Test File");
assert_eq!(file_item.description(), "Test File");
}
use warp::constellation::{
file::File,
item::Item
};
fn main() {
let file = File::new("test.txt");
let mut file_item = Item::from(file);
file_item.rename("test.pdf").unwrap();
assert_eq!(file_item.name(), "test.pdf");
}