06:17 < bridge_> i am a huge fan of how transparent they are 06:49 < bridge_> i just switched to zoho :justatest: 10:15 < bridge_> Hah 10:16 < bridge_> Its nothint Special 10:30 < bridge_> u 10:38 < ChillerDragon> jopsti can you belive it i cant game during a zoom call w out fps drops 10:38 < ChillerDragon> i need better hardware 10:39 < bridge_> or just... DONT CONNECT 4 DUMMIES!!! 10:40 < ChillerDragon> ._. im just using 1 client 10:41 < ChillerDragon> https://zillyhuhn.com/cs/.1689583295.png 10:41 < ChillerDragon> i dont even max out 10:41 < ChillerDragon> how do computers work 10:42 < ChillerDragon> heat throtle? 10:42 < bridge_> Try open box xd 10:42 < ChillerDragon> trol 10:42 < ChillerDragon> i need my gnome pro 10:42 < ws-client> i tested openbox lately and had a lag 10:43 < ws-client> since then its clear to me 10:43 < ws-client> i have to use terminal only 10:43 < ws-client> rip 10:43 < ChillerDragon> +1 10:43 < ws-client> sad that wayland is still broken 10:43 < ws-client> its faster 10:43 < ChillerDragon> https://www.youtube.com/watch?v=D0tpwp2QN6A 10:43 < ws-client> maybe no more lags with it 10:43 < ChillerDragon> this best tw client 10:56 < ws-client> chillerdragon: what client did u use to have the zoom call? browser, native(aka browser over electron xdd)? 12:27 < bridge_> Cool, didn't know https://github.com/Syllo/nvtop 12:28 < bridge_> ye i mentioned it to chiller 12:28 < bridge_> Doesn't work for Apple GPUs, too bad πŸ˜„ 12:28 < bridge_> f 12:29 < bridge_> Might be Linux-only anyway 12:29 < bridge_> Browser 12:29 < bridge_> (<@749222324980416602_ws-client>) 12:31 < ws-client> chillerdragon: cristal clear, firefox issue 12:31 < ws-client> xd 12:32 < ws-client> "Nvtop stands for Neat Videocard TOP". LMAO 12:34 < ws-client> radeontop is still better for amd enjoyers i guess, bcs more detailed 13:16 < bridge_> @jupeyy_keks :justatest: 13:32 < bridge_> @robyt3 did smth change recently. Second time I saw this lately 13:35 < bridge_> Looks like it's related to tee rendering in kill messages, see decoded crash dump I posted in the issue 13:37 < bridge_> Do you know that you can earn $5,000 or more weekly from crypto Trading? With Just $500… 100% Inbox Admin on Telegram for more details πŸ‘‡πŸ‘‡πŸ‘‡πŸ‘‡πŸ‘‡πŸ‘‡ https://t.me/PROFITSWITHSTEVE 13:42 < bridge_> Pls send the crash logs. 13:42 < bridge_> 13:42 < bridge_> @robyt3 it must be a recent change i guess. 13:50 < ws-client> @murpi can u also share the assert log, it might say if some image could not be loaded or similar 13:52 < bridge_> Jupstar: There's this in the assert log: 13:52 < bridge_> `2023-07-17 18:04:47 I libpng: warning for file "skins/glow_preamy.png": iCCP: known incorrect sRGB profile` 13:52 < bridge_> That's about it, the rest is just chat messages 13:52 < ws-client> that shouldnt matter. Ok 13:56 < bridge_> It might be time to work on some classic spam prevention algorithms 13:57 < bridge_> https://en.wikipedia.org/wiki/Bag-of-words_model 14:28 < ws-client> @murpi do you remember if you were in a started + unlocked team xd 14:30 < bridge_> That's not my crash, I'll ask. 14:31 < ws-client> maybe the info might not help anyway. the question would be rather if any tee on the server was in a strated + unlocked team 14:31 < ws-client> maybe they can recover whats left from the autodemo 14:41 < bridge_> He says the crash happened after they finished a map in a team. 14:42 < ws-client> so quite possible, esp on ddmax where teams are often killed after finish 14:43 < ChillerDragon> omg watfak 14:43 < ChillerDragon> i have fps cap at 666 14:43 < ChillerDragon> and it bugs up to 1000 fps xxxd but feels like 3 14:43 < ChillerDragon> zoom is fakin virus 14:43 < ws-client> it doesnt bug to 1000 14:44 < ChillerDragon> ok it features up to 1000 14:44 < ws-client> it probably has a bad frame, and tries to stabilize that frame 14:44 < ws-client> how do you cap fps? 14:44 < ChillerDragon> gfx moment 14:44 < ws-client> with cl_refresh_rate? 14:44 < ChillerDragon> na dat 0 14:44 < ChillerDragon> gfx rate 14:45 < ws-client> yeah then i guess its not actually at 1000 fps.. 14:45 < ws-client> at least not longer than like 1000/60 ms 14:46 < ws-client> someone good with client network code? 14:46 < ws-client> i wonder if `m_RenderInfo` in the client array in gameclient ever gets cleared 14:47 < ws-client> // clear out unneeded client data for(int i = 0; i < MAX_CLIENTS; ++i) { if(!m_Snap.m_apPlayerInfos[i] && m_aClients[i].m_Active) { m_aClients[i].Reset(); m_aStats[i].Reset(); } } 14:47 < ws-client> irc moment 14:47 < ChillerDragon> lol 14:47 < ws-client> chillerdragon: when multiline 14:47 < ChillerDragon> soon(tm) 14:47 < ChillerDragon> first gotta fix 0.7 axaxax 14:48 < ws-client> that just adds even more bugs to our bad af code 14:48 < ws-client> robyte fixes 20000000000000 bugs per day. still we never have fewer bugs 14:48 < ws-client> xdd 14:48 < ChillerDragon> more bugs? 14:48 < ws-client> i dunno 14:48 < ws-client> i guess it stays the same 14:48 < ChillerDragon> the still doesnt make sense 14:49 < ws-client> well he fixes a bug and unhides a hidden one 14:49 < ws-client> from 2 million years ago 14:49 < ws-client> when the dinosours played ddnet 14:55 < ChillerDragon> xd 14:58 < bridge_> idk how 14:59 < bridge_> You can find your crash logs in %appdata%\DDNet\dumps or %appdata%\Teeworlds\dumps 14:59 < bridge_> Paste the files into this channel 15:01 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1130484426992779294/DDNet_win64_crash_log_2023-07-15_22-42-44_8432_29ec71ad337d3e48730ac45023dc427c8af4f173.RTP 15:02 < bridge_> Thanks πŸ‘ 17:18 < bridge_> it there a way to switch to ddnet's auth system in the rcon? make it ask for a username with the password 17:22 < bridge_> there is a netmsg for that, yes 17:34 < bridge_> Yes, it will be used once you add the first user/password pair (see `auth_*` commands) 17:51 < bridge_> @ryozuki can you send the rust memory cheatsheet again? 17:52 < bridge_> u can google it xd 17:52 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1130527425810419742/rust-memory-container-cs-3840x2160-dark-back-low-contrast.png 17:52 < bridge_> Smart 17:52 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1130527482391568415/rust-memory-container-cs-1920x1080-dark-back-high-contrast.png 17:53 < bridge_> @learath2 u missing #off-topic 17:54 < bridge_> I'm too busy having trouble deciding on a design 17:54 < bridge_> xd 17:54 < bridge_> what u doin 17:54 < bridge_> For some reason nothing I make looks good to me this week 17:55 < bridge_> I want to finally replace the python bot completely 17:55 < bridge_> nice 17:55 < bridge_> @learath2 i think u tend to overcomplicate 17:55 < bridge_> or over engineer 17:55 < bridge_> do the simplest route to the result 17:55 < bridge_> and then expand 17:55 < bridge_> for example the Any db 17:55 < bridge_> just choose 1 fixed 17:56 < bridge_> But idk I really want per module context without passing it around with all the other context :/ 17:56 < bridge_> but u wont finish this this week then :/ 17:56 < bridge_> also if u just arc it its a cheap copy 17:56 < bridge_> clone* 17:56 < bridge_> If I can find something that looks good to me I can produce code really fast 17:56 < bridge_> but I just write stuff, it doesn't look very good, I just start again πŸ˜„ 17:56 < bridge_> xd 17:57 < bridge_> and u have nothing to show 17:57 < bridge_> :justatest: 17:57 < bridge_> Like an Arc with three RwLocks in it is eeeeeeeeh 17:57 < bridge_> its ok 17:57 < bridge_> Even needing a lock for this is also very eeeeeeeeh anyway, I technically write most of this just once, after one memory fence it'll be the same everywhere 17:57 < bridge_> once cell then 17:58 < bridge_> or simply init it before putting it in the contex 17:58 < bridge_> context 17:58 < bridge_> You are right though, maybe I should just power through with the RwLock and I can clean it up after I have something working 17:58 < bridge_> yeah 17:58 < bridge_> and u probs wont have perf problems anyway 17:58 < bridge_> No but it'll forever annoy me that I didn't write it properly 17:59 < bridge_> but if u have so much trouble finding the proper way 17:59 < bridge_> 5 years later I'll wake up in cold sweats 17:59 < bridge_> maybe there isnt? a proper your way 17:59 < bridge_> u need to protect the data, u use locks 17:59 < bridge_> or make non racy hardware kek 18:00 < bridge_> @learath2 maybe u can look at axum 18:00 < bridge_> it has type checked state 18:00 < bridge_> https://docs.rs/axum/latest/axum/extract/struct.State.html 18:00 < bridge_> its awesome 18:01 < bridge_> https://docs.rs/axum/latest/axum/index.html#sharing-state-with-handlers 18:01 < bridge_> `let mut lock = ctx.modules.write().await.unwrap().database.write().await;` 18:01 < bridge_> This looks horrendous 18:01 < bridge_> why is modules behind a lock? 18:01 < bridge_> and im sure it can be read() 18:01 < bridge_> locks use interior mutabiity 18:02 < bridge_> they dotn need to be mut self 18:02 < bridge_> Ah yes, that one can be read() 18:02 < bridge_> is the code somewhere 18:02 < bridge_> Not yet, as it currently does nothing 18:03 < bridge_> why not simply ctx.database.write() 18:03 < bridge_> but I guess I could push it, maybe you have some structural idea 18:03 < bridge_> also if u use sqlx 18:03 < bridge_> You write more Rust 18:03 < bridge_> the database handle is already thread safe 18:03 < bridge_> well if u use a pool it is 18:04 < bridge_> ye, for me its always harder to interpret what others says than looking at code 18:04 < bridge_> code never lies 18:06 < bridge_> @learath2 i thought about smallvec in cpp, in rust thanks to enum optimizations it will probs find a way to put the heap vec ptrs inside the stack allocated array 18:06 < bridge_> but on cpp? 18:06 < bridge_> a union? 18:06 < bridge_> rly unsafe 18:07 < bridge_> @learath2 i thought about smallvec in cpp, in rust thanks to enum optimizations it will probs find a way to put the heap vec ptrs inside the stack allocated array when using the vec variant 18:09 < bridge_> https://github.com/Learath2/ddnet-discordbot-ng it's just me messing around with structure trying to find something I like 18:09 < bridge_> The goals are to be able to add `modules` easily 18:09 < bridge_> what does a module do 18:10 < bridge_> It can be anything really, it's like a `CComponent` it has hooks that the main will call into as needed 18:11 < bridge_> this looks like the perfect job for a trait 18:12 < bridge_> Yeah, sounds like a good idea, I might do that 18:13 < bridge_> Each module can add stuff to the config and stuff to the context, that's the part I'm mostly trying to figure out now 18:13 < bridge_> dont but the db behind a lock 18:13 < bridge_> use the type system in ur favour 18:13 < bridge_> rust will let u know when u need a lock trust me xd 18:13 < bridge_> sqlitepool is thread safe from sqlx 18:14 < bridge_> I was trying to keep it symmetric 18:14 < bridge_> and yeah u have a structure that fits traits i think 18:16 < bridge_> Are async traits even a thing btw? 18:16 < bridge_> soon tm 18:16 < bridge_> for now use async_trait 18:16 < bridge_> They didn't use to be last I gave this an attempt 18:16 < bridge_> ```rust 18:16 < bridge_> 18:16 < bridge_> #[async_trait::async_trait] 18:16 < bridge_> pub trait Module { 18:17 < bridge_> async fn init(ctx: Arc); 18:17 < bridge_> 18:17 < bridge_> async fn register_commands(); 18:17 < bridge_> 18:17 < bridge_> async fn handle_interaction(interaction: &Interaction); 18:17 < bridge_> 18:17 < bridge_> async fn handle_message(message: &Message); 18:17 < bridge_> } 18:17 < bridge_> ``` 18:17 < bridge_> u dont need to pass BotContext on all calls 18:17 < bridge_> simply save it on self 18:17 < bridge_> well i missed self there xd 18:17 < bridge_> ```rust 18:17 < bridge_> 18:17 < bridge_> #[async_trait::async_trait] 18:17 < bridge_> pub trait Module { 18:17 < bridge_> async fn init(&self, ctx: Arc); 18:17 < bridge_> 18:17 < bridge_> async fn register_commands(&self); 18:17 < bridge_> 18:17 < bridge_> async fn handle_interaction(&self, interaction: &Interaction); 18:17 < bridge_> 18:17 < bridge_> async fn handle_message(&self, message: &Message); 18:17 < bridge_> } 18:17 < bridge_> ``` 18:17 < bridge_> Yeah, there was no self in this initial attempt, I guess that's a good idea, make modules actual objects 18:18 < bridge_> btw self can be : 18:18 < bridge_> ``` 18:18 < bridge_> &self 18:18 < bridge_> &mut self 18:18 < bridge_> Pin<&mut self> 18:18 < bridge_> Pin<&self> 18:18 < bridge_> ``` 18:18 < bridge_> Good ideas, let me give it another go 18:18 < bridge_> This will be about the 5th time I've rewritten up to this point πŸ˜„ 18:18 < bridge_> u can also make the trait generic if u need more 18:18 < bridge_> xd 18:18 < bridge_> anmd honestly 18:19 < bridge_> i wouldnt put the database as a module 18:19 < bridge_> i would put it part of bot context 18:19 < bridge_> and modules use the database 18:19 < bridge_> modules would be then a vec of objects implementing the module trait 18:19 < bridge_> without a lock 18:19 < bridge_> the locks are inside the objects 18:19 < bridge_> isnt it better to lock less scope 18:20 < bridge_> Yeah not the worst idea, it'd also take care of the weird asymmetry 18:20 < bridge_> @learath2 btw u may be able to forego the option 18:20 < bridge_> in rust u can partially initialize a struct 18:20 < bridge_> pub database: Option, 18:20 < bridge_> pub ddnet_bans: Option, 18:20 < bridge_> i mean this 18:20 < bridge_> idk why its a option 18:20 < bridge_> just make it always be there? xd 18:21 < bridge_> ah well 18:21 < bridge_> u solve this problem using a vec of modules 18:21 < bridge_> simply dont care about them specifically 18:21 < bridge_> then implement ur full blown ipc between modules, and reach mars 18:21 < bridge_> Ah this part is actually a bit of an issue, with this new vec of modules I now don't really have an easy way to generate the config struct 18:22 < bridge_> @learath2 make a trait 18:22 < bridge_> or part of trait 18:22 < bridge_> that returns the needed config for a module 18:22 < bridge_> hmm 18:23 < bridge_> u make a global config 18:23 < bridge_> it has the modules name , module_name: T 18:23 < bridge_> where T is simply deserialize 18:23 < bridge_> Types aren't first class so I can't return them, but maybe an associated type? 18:23 < bridge_> u pass T to the trait method 18:23 < bridge_> there is first class 18:23 < bridge_> depending o nwhat u using 18:23 < bridge_> is it json? 18:23 < bridge_> serde_json::Value 18:23 < bridge_> toml 18:23 < bridge_> deserializes anything 18:24 < bridge_> and u can get T from Value 18:24 < bridge_> But that's not what I meant, I mean the global config struct, I need to somehow be able to generate it 18:24 < bridge_> :justatest: 18:24 < bridge_> Currently it's just `modules: ModuleConfig`, and `ModuleConfig` is just a struct of the configs from each module 18:25 < bridge_> hmm 18:25 < bridge_> each module should be a toml table 18:25 < bridge_> vec of Table(Table)? 18:25 < bridge_> u deserialize that to the T provided by the module trait 18:26 < bridge_> I think we are losing eachother again, let me code it up a bit then I can show more then we can talk more 18:29 < bridge_> ```rust 18:29 < bridge_> #[derive(Deserialize, Debug)] 18:29 < bridge_> pub struct Config2 { 18:29 < bridge_> pub modules: Vec, 18:29 < bridge_> } 18:29 < bridge_> 18:29 < bridge_> #[derive(Deserialize, Debug)] 18:29 < bridge_> pub struct RyoModule { 18:29 < bridge_> pub hello: String, 18:29 < bridge_> } 18:29 < bridge_> 18:29 < bridge_> pub fn parse_config2(path: &Path) -> anyhow::Result { 18:29 < bridge_> let mut file = File::open(path)?; 18:29 < bridge_> let mut file_contents = String::new(); 18:29 < bridge_> file.read_to_string(&mut file_contents)?; 18:29 < bridge_> 18:29 < bridge_> Ok(toml::from_str(&file_contents)?) 18:29 < bridge_> } 18:30 < bridge_> 18:30 < bridge_> pub fn parse_config_from_module(config: &toml::Table) -> anyhow::Result { 18:30 < bridge_> Ok(RyoModule::deserialize(config["ryo"].clone())?) 18:30 < bridge_> } 18:30 < bridge_> ``` 18:30 < bridge_> @learath2 18:30 < bridge_> wait 18:30 < bridge_> ```rust 18:30 < bridge_> #[derive(Deserialize, Debug)] 18:30 < bridge_> pub struct Config2 { 18:30 < bridge_> pub modules: toml::Table, 18:30 < bridge_> } 18:30 < bridge_> 18:30 < bridge_> #[derive(Deserialize, Debug)] 18:30 < bridge_> pub struct RyoModule { 18:30 < bridge_> pub hello: String, 18:30 < bridge_> } 18:30 < bridge_> 18:30 < bridge_> pub fn parse_config2(path: &Path) -> anyhow::Result { 18:30 < bridge_> let mut file = File::open(path)?; 18:30 < bridge_> let mut file_contents = String::new(); 18:30 < bridge_> file.read_to_string(&mut file_contents)?; 18:30 < bridge_> 18:30 < bridge_> Ok(toml::from_str(&file_contents)?) 18:30 < bridge_> } 18:30 < bridge_> 18:30 < bridge_> pub fn parse_config_from_module(config: &toml::Table) -> anyhow::Result { 18:30 < bridge_> Ok(RyoModule::deserialize(config["ryo"].clone())?) 18:30 < bridge_> } 18:31 < bridge_> ``` 18:31 < bridge_> now 18:31 < bridge_> u dont need a vec 18:31 < bridge_> just table 18:31 < bridge_> xd 18:31 < bridge_> <_voxeldoesart> Ok() 18:31 < bridge_> i think its a table 18:31 < bridge_> idk toml rn 18:31 < bridge_> but u get the idea 18:31 < bridge_> <_voxeldoesart> 100 years ago this would have no meaning 18:38 < bridge_> learath dieded 18:41 < bridge_> How? 18:43 < bridge_> with unsafe 18:43 < bridge_> https://doc.rust-lang.org/std/mem/union.MaybeUninit.html#initializing-a-struct-field-by-field 18:43 < bridge_> ```rust 18:43 < bridge_> #[derive(Debug, PartialEq)] 18:43 < bridge_> pub struct Foo { 18:43 < bridge_> name: String, 18:43 < bridge_> list: Vec, 18:43 < bridge_> } 18:43 < bridge_> 18:43 < bridge_> let foo = { 18:43 < bridge_> let mut uninit: MaybeUninit = MaybeUninit::uninit(); 18:43 < bridge_> let ptr = uninit.as_mut_ptr(); 18:43 < bridge_> 18:43 < bridge_> // Initializing the `name` field 18:43 < bridge_> // Using `write` instead of assignment via `=` to not call `drop` on the 18:43 < bridge_> // old, uninitialized value. 18:43 < bridge_> unsafe { addr_of_mut!((*ptr).name).write("Bob".to_string()); } 18:43 < bridge_> 18:43 < bridge_> // Initializing the `list` field 18:43 < bridge_> // If there is a panic here, then the `String` in the `name` field leaks. 18:43 < bridge_> unsafe { addr_of_mut!((*ptr).list).write(vec![0, 1, 2]); } 18:43 < bridge_> 18:43 < bridge_> // All the fields are initialized, so we call `assume_init` to get an initialized Foo. 18:43 < bridge_> unsafe { uninit.assume_init() } 18:43 < bridge_> }; 18:43 < bridge_> ``` 19:04 < bridge_> OH YEAH MILESTONE HIT 19:04 < bridge_> 500 issues 19:04 < bridge_> epic 19:05 < bridge_> @ryozuki gz to us, we at least tried to prevent this dark milestone from happening xd 19:06 < bridge_> xddd 19:08 < bridge_> https://github.com/ddnet/ddnet/issues/4001#issuecomment-1638541682 19:08 < bridge_> 19:08 < bridge_> 😬 19:09 < bridge_> next milestone is 600 19:21 < bridge_> robyte destroyed the milestone 19:21 < bridge_> 😬 19:25 < bridge_> 373 "relevant" issues 19:26 < bridge_> we really need better ways to reproduce issues 19:45 < bridge_> @ryozuki why do you think `&toml::Value` can't be deserialized from? I can clone just fine, just interested why it can't borrow 19:46 < bridge_> @learath2 idk why rn 19:46 < bridge_> deserialize stuff? 19:46 < bridge_> maybe it only implements deserializeowned or smth 19:48 < bridge_> <_voxeldoesart> is it me or are old prs like #2754 doing infinitely long checks 19:48 < bridge_> https://github.com/ddnet/ddnet/pull/2754 19:51 < bridge_> the timed out eventually 19:51 < bridge_> i dont think they still use any resources 19:51 < bridge_> they probably simply have a "pending" state and the client parses that and shows a yellow circle 19:52 < bridge_> they timed out eventually 19:54 < bridge_> <_voxeldoesart> ah 20:22 < bridge_> I never really looked into the internals of serde, when I derive `Deserialize` I wonder what that implements 20:26 < bridge_> serde is dtolnay grand creation 20:26 < bridge_> https://docs.rs/serde/latest/serde/de/trait.DeserializeOwned.html 20:26 < bridge_> https://serde.rs/lifetimes.html 20:27 < bridge_> https://tweaked.cc/ 20:28 < bridge_> this is the best minecraft mod 20:28 < bridge_> sadly its lua 20:28 < bridge_> i wonder if this can be made with rust 20:28 < bridge_> what does this do? 20:29 < bridge_> @ryozuki serde does zero copy deserialization, right? How can I get copy deserialization? πŸ˜„ 20:29 < bridge_> lifetimes 20:29 < bridge_> &str 20:30 < bridge_> but u rly wanna complicate it 20:30 < bridge_> when u dont even have a solid design first 20:30 < bridge_> 😬 20:30 < bridge_> I'm an advocate for proper learning, I don't use things I don't understand 20:31 < bridge_> When I need to clone something that will get dropped in a minute it doesn't really compute in my brain 20:31 < bridge_> it doesnt mean inproper learning 20:31 < bridge_> it means steps 20:31 < bridge_> i dont think adding lifetimes later is gonna be a big issue 20:32 < bridge_> It means improper learning, if you just put a `.clone()` there and it kinda works you haven't understood shit 20:32 < bridge_> XD 20:32 < bridge_> no 20:32 < bridge_> for u it means 20:32 < bridge_> "i understand this is not the best but since i want to get a result fast for now ill leave it and refactor in the future, when igot a proper structure" 20:32 < bridge_> Don't care would rather have no bot then one I coded by randomly inserting stuff 20:33 < bridge_> xd 20:33 < bridge_> ok 20:33 < bridge_> i think its not hard anyway 20:33 < bridge_> Also I think you misunderstood my question, I explicitly want copy, not zero-copy 20:33 < bridge_> With lifetimes I could achieve zero-copy, I cba 20:33 < bridge_> by copy u mean the trait? 20:33 < bridge_> u can only copy types that impl copy 20:34 < bridge_> and structs that all fields are copy 20:34 < bridge_> I have a `&toml::Value`, I should be able to deserialize out of this, no? It gives access to all the data needed to deserialize 20:34 < bridge_> im now more confused 20:34 < bridge_> i think u need to pass it by value 20:35 < bridge_> since it doesnt know the underlying types 20:35 < bridge_> its opaque 20:35 < bridge_> it has to deserialize owning it 20:35 < bridge_> i think thats the rationale 20:35 < bridge_> So you can't deserialize from a borrowed type? 20:35 < bridge_> u cant from &toml::Value specifically i think 20:35 < bridge_> if u have a Deserialize struct 20:35 < bridge_> i think u can 20:36 < bridge_> ```rust 20:36 < bridge_> /// Interpret a `toml::Value` as an instance of type `T`. 20:36 < bridge_> /// 20:36 < bridge_> /// This conversion can fail if the structure of the `Value` does not match the 20:36 < bridge_> /// structure expected by `T`, for example if `T` is a struct type but the 20:36 < bridge_> /// `Value` contains something other than a TOML table. It can also fail if the 20:36 < bridge_> /// structure is correct but `T`'s implementation of `Deserialize` decides that 20:36 < bridge_> /// something is wrong with the data, for example required struct fields are 20:36 < bridge_> /// missing from the TOML map or some number is too big to fit in the expected 20:36 < bridge_> /// primitive type. 20:36 < bridge_> pub fn try_into<'de, T>(self) -> Result 20:36 < bridge_> where 20:36 < bridge_> T: de::Deserialize<'de>, 20:36 < bridge_> { 20:36 < bridge_> d 20:36 < bridge_> ``` 20:36 < bridge_> they impl it on self 20:36 < bridge_> not &self 20:37 < bridge_> ask them 20:37 < bridge_> Ah, now I see 20:37 < bridge_> @learath2 werent u the one saying the only truth is source code or smth 20:37 < bridge_> i always check the type stuff 20:38 < bridge_> control click on vscode 20:38 < bridge_> True, idk why I didn't think to just check the source 20:39 < bridge_> https://www.lelanthran.com/chap9/content.html 20:39 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1130569459074076765/duty_calls.png 20:39 < bridge_> The C Programming Language: Myths and Reality (1) 20:40 < bridge_> > 20:40 < bridge_> > 20:40 < bridge_> > The Internet is the first thing that humanity has built that humanity doesn’t understand, the largest experiment in anarchy that we have ever had. 20:40 < bridge_> > 20:40 < bridge_> > -- Eric Schmidt 20:40 < bridge_> xd 21:02 < bridge_> i love cooking up dumpster fire frontend code on company internships :poggers2: 21:14 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1130578167325802536/image.png 21:14 < bridge_> awesome 21:16 < bridge_> not awesome 21:16 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1130578767140622346/image.png 21:17 < bridge_> πŸ«₯ 21:17 < bridge_> well this is for companies 21:17 < bridge_> but ferrous systems is good 21:17 < bridge_> kdab is also epic 21:17 < bridge_> they made the "ferrous standard reference" for rust 21:17 < bridge_> idk kdab 21:18 < bridge_> kdab are 3d and qt/cpp specialists 21:18 < bridge_> but they maintain the awesome code browser that used to be woboq 21:18 < bridge_> and have a really cool newsletter and blogs 21:19 < bridge_> https://ferrous-systems.com/blog/ferrocene-language-specification/ 21:19 < bridge_> ferrous are The Rust Specialists 21:19 < bridge_> xd 21:20 < bridge_> i'm not sure it is for businesses based on the email i got 21:20 < bridge_> but idk 21:20 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1130579756266573925/image.png 21:20 < bridge_> https://spec.ferrocene.dev/ 21:20 < bridge_> @learath2 21:21 < bridge_> @mpft but i wouldnt waste money learning the basics 21:21 < bridge_> in fact i would go to them once i know a lot 21:21 < bridge_> i want expert knowledge 21:21 < bridge_> xd maybe 21:21 < bridge_> not like i have that money anyway 21:21 < bridge_> seems like a cool thing though 21:22 < bridge_> i have to go 21:22 < bridge_> i bought a large bag of candied almonds at the renaissance festival yesterday and i wont be able to eat them for a while cuz i have a dentist appt xd 21:23 < bridge_> xd 22:06 < bridge_> how long to learn rust @ryozuki ? 22:07 < bridge_> https://www.reddit.com/r/ProgrammerHumor/comments/15240i5/programmingishard/ 22:09 < bridge_> xd 22:16 < bridge_> <_voxeldoesart> i got a code learning app and it doesnt have rust 22:16 < bridge_> <_voxeldoesart> lol 22:17 < bridge_> <_voxeldoesart> sololearn 22:25 < bridge_> code learning app πŸ’€ 22:30 < bridge_> <_voxeldoesart> and 22:34 < bridge_> I love them 22:36 < bridge_> <_voxeldoesart> oh ok 22:37 < bridge_> it’s 2:30 and my tooth hurty 22:37 < bridge_> excellent