pub struct SourceManager { /* private fields */ }
Expand description
Holds a list of Source objects and selects one to use when loading a package
Implementations§
Source§impl SourceManager
impl SourceManager
Sourcepub fn new() -> SourceManager
pub fn new() -> SourceManager
Constructs a new, empty SourceManager
Examples found in repository?
examples/basic.rs (line 58)
40fn main()
41{
42 println!("Listing items in mypackage/text:");
43
44 let mut source = FilesystemSource::new("examples", TrustLevel::TrustedSource);
45 let iter = source.iter_entries("mypackage", "text");
46
47 for entry in iter
48 {
49 match entry
50 {
51 Ok(pathname) => println!("{}", pathname),
52 Err(error) => println!("Error: {}", error)
53 }
54 }
55
56 println!("Loading files from mypackage/text...");
57
58 let source_manager = Rc::new(RefCell::new(SourceManager::new()));
59 source_manager.borrow_mut().add_source(Box::new(source));
60
61 let mut store = DataStore::<TextData>::new(source_manager);
62
63 store.load_package("mypackage").expect("Failed to load package.");
64
65 for name in &["emoji.txt", "missingfile.txt", "loremipsum.txt"]
66 {
67 match store.get_id("mypackage", name)
68 {
69 Ok(id) =>
70 {
71 println!("Contents of {}:", name);
72 match store.get(id)
73 {
74 Some(data) => println!("{}", data.text),
75 None => println!("(not found)"),
76 }
77 }
78 Err(error) =>
79 {
80 println!("Error for {}:\n{}", name, error);
81 }
82 }
83
84 println!("");
85 }
86}
Sourcepub fn add_source(&mut self, source: Box<dyn Source>) -> SourceId
pub fn add_source(&mut self, source: Box<dyn Source>) -> SourceId
Adds the given Source to the end of the list.
Examples found in repository?
examples/basic.rs (line 59)
40fn main()
41{
42 println!("Listing items in mypackage/text:");
43
44 let mut source = FilesystemSource::new("examples", TrustLevel::TrustedSource);
45 let iter = source.iter_entries("mypackage", "text");
46
47 for entry in iter
48 {
49 match entry
50 {
51 Ok(pathname) => println!("{}", pathname),
52 Err(error) => println!("Error: {}", error)
53 }
54 }
55
56 println!("Loading files from mypackage/text...");
57
58 let source_manager = Rc::new(RefCell::new(SourceManager::new()));
59 source_manager.borrow_mut().add_source(Box::new(source));
60
61 let mut store = DataStore::<TextData>::new(source_manager);
62
63 store.load_package("mypackage").expect("Failed to load package.");
64
65 for name in &["emoji.txt", "missingfile.txt", "loremipsum.txt"]
66 {
67 match store.get_id("mypackage", name)
68 {
69 Ok(id) =>
70 {
71 println!("Contents of {}:", name);
72 match store.get(id)
73 {
74 Some(data) => println!("{}", data.text),
75 None => println!("(not found)"),
76 }
77 }
78 Err(error) =>
79 {
80 println!("Error for {}:\n{}", name, error);
81 }
82 }
83
84 println!("");
85 }
86}
Sourcepub fn source(&mut self, id: SourceId) -> Option<&mut Box<dyn Source>>
pub fn source(&mut self, id: SourceId) -> Option<&mut Box<dyn Source>>
Returns a reference to the Source of the given ID.
Sourcepub fn package_source_id(&self, package_name: &str) -> SourceId
pub fn package_source_id(&self, package_name: &str) -> SourceId
Auto Trait Implementations§
impl Freeze for SourceManager
impl !RefUnwindSafe for SourceManager
impl !Send for SourceManager
impl !Sync for SourceManager
impl Unpin for SourceManager
impl !UnwindSafe for SourceManager
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.