首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客822266614号
南京邮电大学 C++
发布于浙江
关注
已关注
取消关注
@Aerospike:
牛客Rust社区(web server Chapter 1)
找了很久牛客上面也有很多rust爱好者,但是Rust就没有类似Java求职、C++项目等圈子广场,希望官方可以提供一个Rust爱好交流圈子啥的。C++项目者应该做过最多的就是web server服务器了,用Rust简单复现一个.前置依赖:toml 文件tracing = "0.1.37"tracing-subscriber = "0.3.17"// 日志文件第一步先注册一下全局日志,我不太喜欢println的方式打印,感觉那样太简陋且也没有可读性。// 注册日志tracing_subscriber::registry() .with(fmt::layer()) .init();然后是监听端口:127.0.0.1:8888 let listener = TcpListener::bind("127.0.0.1:8888").unwrap();listener.incoming().map(Result::unwrap).for_each(handle_connection);// handle_connection 是后面具体请求处理的方法,这儿先过滤,后面会讲这样子就可以监听一个请求了,可以直接通过浏览器进行访问,但是我们怎么判断一个请求是否正确呢?这儿就得考虑http请求格式了。可以通过这种方式在handle_connection方法中打印http_request看看格式,上面我写的方式是函数式编程,可能没怎么了解过rust的同学看起来估计可读性不高,我简单解释下:listener.incoming() 返回一个流(stream)的迭代器,该迭代器代表监听器接收到的传入连接。map(Result::unwrap) 对流中的每个元素执行 Result::unwrap 操作,将 Ok(T) 转换为对应的 T 值,忽略 Err 的情况。这是因为 listener.incoming() 返回的是一个 Result<TcpStream, Error> 类型,使用 Result::unwrap 可以提取出成功的 TcpStream 值。for_each(handle_connection) 对经过映射处理后的每个流应用 handle_connection 函数。for_each 方法接受一个闭包作为参数,并对流进行迭代并执行闭包中定义的操作。在这里,handle_connection 函数被应用于每个流上,实现对每个连接的处理。故而上面其实最终传入handle_connection方法的都是一个TcpStream值。所以我们可以这么打印。let buf_reader = BufReader::new(&mut stream);let http_request: Vec<_> = buf_reader .lines() .map(|result| result.unwrap()) .take_while(|line| !line.is_empty()) .collect(); tracing::info!("Request: {:#?}", http_request);可以看到格式是这样的:这儿我们判断比较简单,通过request的第一个值判断是否走http请求let buf_reader = BufReader::new(&mut stream);let request_line = buf_reader.lines().next().unwrap().unwrap();let (status_line, filename) = match request_line.as_str() { "GET / HTTP/1.1" => ("HTTP/1.1 200 OK", "hello.html"), _ => ("HTTP/1.1 404 NOT FOUND", "404.html"),};let contents = fs::read_to_string(filename).unwrap();let length = contents.len();let response = format!("{status_line}\r\nContent-Length: {length}\r\n\r\n{contents}");stream.write_all(response.as_bytes()).unwrap();这儿的hello.html和 `404.html` 是我个人基于根目录创建的文件,这样子就可以给用户基本的展示了,这儿其实非常简单,就和用springboot写一个hello world的controller一样,当前是单线程的,肯定会出现阻塞的情况,下个文章准备写一个线程池来实现多线程不阻塞工作。
点赞 1
评论 2
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
07-30 15:24
已编辑
门头沟学院 Java
我一上班就头疼
当初找实习的时候,总是对上班抱有幻想,觉得比学校里面开心多了,自己出去生活会更自由,现在我已经实习一个月了,每天都想觉得好累,最近代码一直被返工,原因是不够简洁,六点下班,五点半让我做代码优化,感觉生活都无光了。原本以为六点下班自己会自主学习,把之前的知识巩固再加强,结果是每天下班躺在床上连翻身都不翻,自己之前会背的八股现在也不会了,算法题也写不出来了,在小厂天天crud,唯一学会的是用stream。我感觉每个瞬间我都想跑路,但是还是得坚持,因为我觉得我现在回家也什么都不会学的。还是等9月份开学希望能找一个新的能双休的实习吧,单休太折磨人。最近想找一个新的项目替换简历上的项目,大家有什么推荐嘛...
牛泪中:
真实,正如高中半个月放假一次,把学习资料带回家幻想能学习一样
点赞
评论
收藏
分享
07-27 23:23
门头沟学院 数据仓库
二本26应届生想九月份找java实习
目前靠关系在一家保险公司的运营中心实习【数据分析】,感觉不太喜欢现在这个行业,目前java还差一小部分没学完,现在恶补三个月能找到实习吗
点赞
评论
收藏
分享
07-08 20:34
宁夏理工学院 软件测试
25应届生
是我简历有问题吗?求评
程序员小白条:
学历GG,这个排版布局,还有行间距和字缩进不大行,女生自我要求应该更高才是,没内容,起码美观这块要做好
投了多少份简历才上岸
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
07-15 22:48
求问大家简历有什么问题吗
有段实习经历是在小微企业😭,这个会脏简历吗,如果想找个中大厂有什么可以改进的地方吗?谢谢牛u😭😭
牛马人的牛马人生:
建议就是把北邮几个字放大就行了。北邮本硕按理来说完全不用担心啊
点赞
评论
收藏
分享
07-29 14:57
门头沟学院 Java
为什么自我介绍要ppt,是服从性测试吗
复盘中的钝角很想踢足...:
别说ppt了,我简历去面试都不带的
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
百度提前批,三面被推迟一周,喜提秋招第一凉
7177
2
...
虾皮秋招一面
3029
3
...
他拿大厂SSP Offer打牌是什么概念啊?25届双非之光
2503
4
...
百度提前批 三面
2340
5
...
小鹏offer
1461
6
...
被猿辅导挂了简历,但我想说...
1374
7
...
虾皮一面凉经
1323
8
...
最强本科✌
1205
9
...
上班一周,工资还没拿,先欠公司两千
1202
10
...
大学四年,我感觉我像个“孤勇者”
1113
创作者周榜
更多
正在热议
更多
#
简历上的经历如何包装
#
29432次浏览
821人参与
#
秋招被确诊为……
#
164071次浏览
751人参与
#
中兴秋招
#
205609次浏览
2294人参与
#
工作中哪个瞬间让你想离职
#
63602次浏览
569人参与
#
你最希望上岸的公司是?
#
135176次浏览
705人参与
#
和同事相处最忌讳的是__
#
24352次浏览
244人参与
#
25届网易互娱暑实进度
#
78411次浏览
702人参与
#
虾皮求职进展汇总
#
249403次浏览
1856人参与
#
投格力的你,拿到offer了吗?
#
86737次浏览
583人参与
#
2022毕业即失业取暖地
#
102703次浏览
662人参与
#
2022毕业生求职现身说法
#
89276次浏览
700人参与
#
秋招OC许愿
#
327796次浏览
2450人参与
#
你最近一次加班是什么时候?
#
70992次浏览
350人参与
#
26届的你,投了哪些公司?
#
44991次浏览
494人参与
#
你的秋招第一面感觉怎么样
#
76896次浏览
591人参与
#
柠檬微趣工作体验
#
6722次浏览
40人参与
#
你遇到最难的面试题目是_
#
16604次浏览
201人参与
#
我对___祛魅了
#
48344次浏览
438人参与
#
地平线求职进展汇总
#
52649次浏览
369人参与
#
研究所VS国企,该如何选
#
194820次浏览
1819人参与
#
如果校招重来我最想改变的是
#
271891次浏览
2853人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务