add a non-mut version, component_ref
This commit is contained in:
		
							parent
							
								
									268f1b4ff8
								
							
						
					
					
						commit
						f1a9f7dd23
					
				
					 1 changed files with 11 additions and 1 deletions
				
			
		|  | @ -143,11 +143,21 @@ impl RetroComponentBase { | |||
|         Ok(RetroComponentId(self.components.len() - 1)) | ||||
|     } | ||||
| 
 | ||||
|     pub fn component_ref<T: RetroComponent>(&self, id: RetroComponentId) -> Result<&T> { | ||||
|         self.component_ptr(id) | ||||
|             .map(|x| unsafe { &*x }) | ||||
|     } | ||||
| 
 | ||||
|     pub fn component_mut<T: RetroComponent>(&mut self, id: RetroComponentId) -> Result<&mut T> { | ||||
|         self.component_ptr(id) | ||||
|             .map(|x| unsafe { &mut *x }) | ||||
|     } | ||||
| 
 | ||||
|     fn component_ptr<T: RetroComponent>(&self, id: RetroComponentId) -> Result<*mut T> { | ||||
|         let (comp_type, comp_ptr) = self.component_ptrs.get(id.0) | ||||
|             .ok_or_else(|| format!("Invalid ID given to component_mut: {:?}", id))?; | ||||
|         if *comp_type == TypeId::of::<T>() { | ||||
|             Ok(unsafe { &mut *(*comp_ptr as *mut T) }) | ||||
|             Ok(*comp_ptr as *mut T) | ||||
|         } else { | ||||
|             Err(format!( | ||||
|                 "Invalid downcast for {:?}: {:?} != {:?}", | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 lifning
						lifning