pub fn icon<'a>(&'a self, predefined: &'a BlockProvider<Icons>) -> Cow<'a, Block> {
        match self {
            Self::None => Cow::Borrowed(&predefined[Icons::EmptySlot]),
            Self::Activate => Cow::Borrowed(&predefined[Icons::Activate]),
            Self::DeleteBlock => Cow::Borrowed(&predefined[Icons::Delete]),
            // TODO: Once blocks have behaviors, we need to defuse them for this use.
            Self::PlaceBlock(block) => Cow::Borrowed(&block),
            Self::CopyFromSpace => Cow::Borrowed(&predefined[Icons::CopyFromSpace]),
        }
    }
/// Return a block to use as an icon for this tool. For [`Tool::PlaceBlock`], has the
/// same appearance as the block to be placed. The display name of the block should be
/// the display name of the tool.
///
/// TODO (API instability): Eventually we will want additional decorations like "use
/// count" that probably should not need to be painted into the block itself.
Return a block to use as an icon for this tool. For [`Tool::PlaceBlock`], has the
same appearance as the block to be placed. The display name of the block should be
the display name of the tool.


Return a block to use as an icon for this tool . For [ ` Tool :: PlaceBlock ` ] has the same appearance as the block to be placed . The display name of the block should be the display name of the tool .
pub fn icon<'a>(&'a self, predefined: &'a BlockProvider<Icons>) -> Cow<'a, Block> {
        match self {
            Self::None => Cow::Borrowed(&predefined[Icons::EmptySlot]),
            Self::Activate => Cow::Borrowed(&predefined[Icons::Activate]),
            Self::DeleteBlock => Cow::Borrowed(&predefined[Icons::Delete]),
            // TODO: Once blocks have behaviors, we need to defuse them for this use.
            Self::PlaceBlock(block) => Cow::Borrowed(&block),
            Self::CopyFromSpace => Cow::Borrowed(&predefined[Icons::CopyFromSpace]),
        }
    }
pub fn icon < ' a > ( & ' a self , predefined : & ' a BlockProvider < Icons > ) -> Cow < ' a , Block > { match self { Self :: None => Cow :: Borrowed ( & predefined [ Icons :: EmptySlot ] ) , Self :: Activate => Cow :: Borrowed ( & predefined [ Icons :: Activate ] ) , Self :: DeleteBlock => Cow :: Borrowed ( & predefined [ Icons :: Delete ] ) , // TODO: Once blocks have behaviors, we need to defuse them for this use. Self :: PlaceBlock ( block ) => Cow :: Borrowed ( & block ) , Self :: CopyFromSpace => Cow :: Borrowed ( & predefined [ Icons :: CopyFromSpace ] ) , } }
Return a block to use as an icon for this tool.
Return a block to use as an icon for this tool .
&'a self
predefined
&'a BlockProvider<Icons>