首页 > 其他分享 >Implementation of user data in cursive::Cursive

Implementation of user data in cursive::Cursive

时间:2023-06-15 16:36:38浏览次数:26  
标签:mut siv Implementation self pub user cursive data


Implementation of user data in cursive::Cursive

(Jin Qing’s Column, Oct., 2022)

cursive::Cursive can store any user data:

pub struct Cursive {
    ...
    // User-provided data.
    user_data: Box<dyn Any>,
}

impl Cursive {
    ...
    
    pub fn set_user_data<T: Any>(&mut self, user_data: T) {
        self.user_data = Box::new(user_data);
    }

    pub fn user_data<T: Any>(&mut self) -> Option<&mut T> {
        self.user_data.downcast_mut()
    }

    pub fn take_user_data<T: Any>(&mut self) -> Option<T> {
        ...
    }

    pub fn with_user_data<F, T, R>(&mut self, f: F) -> Option<R>
    where
        F: FnOnce(&mut T) -> R,
        T: Any,
    {
        self.user_data().map(f)
    }

Example:

let mut siv = cursive_core::Cursive::new();

// Start with a simple `Vec<i32>` as user data.
siv.set_user_data(vec![1i32, 2, 3]);
assert_eq!(siv.user_data::<Vec<i32>>(), Some(&mut vec![1i32, 2, 3]));

// Let's mutate the data a bit.
siv.with_user_data(|numbers: &mut Vec<i32>| numbers.push(4));

// If mutable reference is not enough, we can take the data by value.
let data: Vec<i32> = siv.take_user_data().unwrap();
assert_eq!(data, vec![1i32, 2, 3, 4]);

// At this point the user data was removed and is no longer available.
assert_eq!(siv.user_data::<Vec<i32>>(), None);


标签:mut,siv,Implementation,self,pub,user,cursive,data
From: https://blog.51cto.com/u_16162321/6493152

相关文章

  • Python Pandas教程:DataFrames入门
    Pandas是一个开源Python库,它在Python编程中提供数据分析和操作。它是数据表示,过滤和统计编程中非常有前途的库。Pandas中最重要的部分是DataFrame,您可以在其中存储和播放数据。在本教程中,您将了解DataFrame是什么,如何从不同的源创建它,如何将其导出到不同的输出,以及如何操作其数据。......
  • 修复 Sqlite "database disk image is malformed"
    Sqlite是用于移动设备的轻量级数据库。Android编译遇到出错异常:databasediskimageismalformed 处理方法为通过对sqlite提供的修复命令建立脚本封装自动处理。修复方法来自网络搜索,年代久远,出处不可考,如找到出处,本文引用改为链接。 1#1.dumpSQL语句2def__d......
  • DataX在Windows上实现Mysql到Mysql同步数据以及配置多个job/多个表同步定时执行bat
    场景DataX-阿里开源离线同步工具在Windows上实现Sqlserver到Mysql全量同步和增量同步:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130330353DataX-在Windows上实现postgresql同步数据到mysql:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130......
  • WPF之浅谈数据模板(DataTemplate)
    数据模板有什么用简而言之,数据模板能让你更方便、更灵活的显示你的各类数据。只有你想不到,没有它做不到的(感觉有点夸张,实践之后,你就觉得一点不夸张......
  • MONAI中,一定要学会的三种Dataset使用方法
    在正式学习MONAI功能函数前,以下的网址必须要收藏。1.MONAIAPI: https://docs.monai.io/en/latest/index.html作用:查询功能函数的用法,主要分为以下几类2.MONAIGitHub项目地址: https://github.com/Project-MONAI   作用:如果上述API介绍的不够完整,可以去项目里面找一些例子......
  • dataframe相关学习
    参考博客:https://blog.csdn.net/qq_35762038/article/details/104934725?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168674788416800184175645%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168674788416800184175645&bi......
  • Windows server 2022 Datacenter 21h2 20230517 20348.1787
    Windowsserver2022Datacenter21h22023051720348.1787slmgr.vbs-dlv......
  • 蒂塔(data)
    蒂塔(data)永恒之地,奇幻之所起。守之神,三姊妹自律数据系统蒂塔(data)自律净化系统缇米(time)自律执行系统伊莎(instructions)圣都尝谓作“汝从何处”问,得报曰:\[“永恒之地”。\]圣都尝对其作“汝何意未缇米、伊莎俱归所问”,得报曰:\[“数据已清除”。\]圣都尝问曰“何为所在行......
  • easyui-datagrid 显示和隐藏
    easyui-datagrid显示和隐藏有点特殊正常使用的  style="display:none;"不起作用需要在外面套一个  easyui-panel  ,控制easyui-panel来间接控制  easyui-datagrid <divid='div_toexcel'class='easyui-panel'closed='true'><tableid=......
  • 将easyui-datagrid组件克隆至另一个 easyui-datagrid组件 表结构(列)及数据完全一样
    将grid组件克隆至grid_toexcel组件表结构(列)及数据完全一样html<tableid='grid'class='easyui-datagrid'style='width:1250px;min-height:450px'title='列表'iconCls='icon-table'pagination='true'......