Add a meeting Rate this page

A

Okay,.

B

All right, so I guess one important thing that I realized was there's an edge case in our uh drop reordering. It's not drop reordering our capture clause. I think it might be because I misunderstood how drop of a reference works. So let me show.

C

You I can be or something.

B

Sorry.

C

Is there a bug or a hack, md or something I.

B

I I want to make sure before I go create a bug I was gonna. I was going more for let's look at uh what is that called uh it's playground once I figure out how to share my screen. Give me a second oh uh share screen. Please I request uh permissions. Please.

C

Oh sorry give me a bit to catch up with what you were saying.

B

There I'm gonna okay, let's see if I can do that now,.

A

You cannot.

B

I can do that all right. Let's, so let me just give me a second I'm.

B

Gonna.

B

And then we have, we have this, let's say fn test that takes a string uh and, let's just add a struct which is.

B

String strength and what this does is we have it.

B

So what we had discussed was if we have this flow here.

B

Second uh and we do drop food atlases food, I thought this would force food to be moved into the closure, but not uh the statement itself. Just because of the drop would force food to be moved into the closure and but not really dropped.

B

But if you look at the oh, my god and let's just call it so that oh.

B

And, let's just also just call it um so wait, it doesn't capture anything that is. Oh, I'm unstable, I'm one stable! That's you.

C

Also need to rename the variable foo and not f. Yes, thank you or that way. Yes,.

B

Yes, so this captures by an immutable borrow, I thought this would force f to get moved, which was, I guess, incorrect. I I thought it was forcing somehow just because our drop of a reference might work. It might force this to get moved and I guess that was wrong, so the problem will come. If I have something like this now we need food to get dropped because uh it's a well. It implements the structures for string. So we need that. That statement is actually do you want. Let.

C

Underscore x.

B

uh Which one this one.

C

Yeah, because that shouldn't do anything.

B

No, my my point is okay, so this is user code.

D

I know.

B

Okay yeah, so my point is: if this is the user code, this does not work as a migration.

C

Why.

B

Because this force is an immutable borrow and not a move which would have happened to this.

C

Example has no mind, never mind it.

B

Would still be uh never mind it, it is previously still also uh immutable borrow, never mind. I. I always confuse that one. Okay,.

C

But if you put let undersco hold on, I think you're wrong, but I want to check something if you put that underscore x, equals f that will force our modes right so now there's actually. No I'm sorry. Let underscore x equals f dot, zero.

B

Oh okay,.

C

Now run it because your example before well, maybe we still have the like bugs around that underscore, but it shouldn't have caused a move, but.

B

Yeah it won't, it doesn't cause a mode, so this will cause a biovalue capture right. Yes,.

C

Okay, as expected, okay, great yeah.

B

Okay yeah, so another thing I wanted to talk to you about was the wrapper uh wrapper pack, so give me one thing: I'll copy the exam. I shared a link yesterday, I think, or day before, let's open that, so I would have expected this to fire a warning at the very least saying I'm taking a reference into something like when the closure is constructed.

B

This will create and do an immutable borrow of food attacks, which is from what I understand unsafe. I.

A

Think it's not because.

C

The field has type u8: oh there's, no alignment restrictions.

B

I do this.

B

Yell at me, ideally, oh, I need to change this.

A

And I'll do.

B

That.

B

Okay, I see that makes sense all right. um My second question was: if I now do this, which is like annoying but.

C

Like that's a extra condition we have to check for, I didn't realize we were that smart, but okay, again, uh which condition that the field has a type whose alignment is not one or who's. Yeah is not one.

B

All right, yes, so.

B

Okay, so- and this case well- okay- let's just not move this into the closure, but let's say we had something that would for okay. I guess I can just do it here, so let y equals x. I guess if I do that now, this would probably not trigger the unsafe.

B

Warning yes, because now do we want this behavior.

A

Yeah, um I think we bother.

C

I think we don't we don't right, it's surprising. I understand why it happens, but it feels like a sort.

B

Of kind of exposing.

C

The de-sugaring and it feels a little like it's the word like you- could do it explicitly by saying let temp equals foo dot x and then using temp, and I think you would pref I would. Rather you did that. The code is more clear.

B

I'd, I'm sorry, can you say what what should I rather do.

C

I'm saying that you could, if you wanted, if this is the code, you want to write and it doesn't compile so okay, let me back up what I don't like about this code is that small modifications will make it stop compiling like adding a use to foo.y um or or a use of foo. Maybe food.y will actually work, but.

B

Wait, why would a small user fool, stop it from compiling again okay, I mean.

C

This one for all of.

C

Yeah, so I guess it just seems a little like non-obvious to me. Yeah.

B

No, no! No! I that's what I asked and.

C

If you take it out of the closure, it won't compile right. Yes, so it sort of relies on this detail of the closure of the sugaring, and so what I was saying is, I think, that's surprising, I'd kind of rather it didn't compile, but what I would expect if you wanted to write this kind. If, if you wanted this code to execute- and you wanted it to compile correctly, you could write before the closure is created. Let temp equals foo dot x.

B

Yeah.

C

And then it would also work if the closure would be sugared like it's the same uh transformation right by the way. I think I forgot to record this meeting. If we want me to, I will start all.

B

Right, I did record yeah, you started.

C

Yeah I've been forgetting all my meetings, but apparently not this one, okay, so yeah. So I think I'd rather it errors that well. But if you, if you add in the truncation it will here right.

B

Yeah, it will err if we truncate on all the uh accesses yeah.

C

Yeah to a field that are, if that is.

B

Not alignment one.

C

And is a member of a packster.

B

Yes, okay, that is what I have status update wise. I think I I wrote most of this, then I realized this edge case so and I probably should I'm gonna go quickly document.

C

That's roxanne's pr, yes,.

B

That's rock soundsphere.

C

Okay, uh actually.

B

One question comments.

C

Has it been updated since then.

B

uh She, I think, made some changes. I am not sure about all of them.

C

It looks.

B

Like there's.

C

Still a fairness.

B

Yes, yeah, we yeah, I think I think she is probably all like. We have a couple deliverers here tonight, so I think she's probably busy with that. uh Yes, once I want to go document the and the size is, alignment does not won in our product board. Yeah uh on our issue. Sorry one second.

C

It would be good to write down our reasoning too yeah. We don't have to re-remember it.

B

We only want to trigger a truncate.

C

This is number.

B

Three.

B

Okay,.

B

Yeah, so it's been a little slow moving. I think through has sort of started on uh significant drops or insignificant drops.

C

Right so we're gonna say there was an interesting case that we.

B

Oh, we also probably on the document truncating one.

C

Yeah, that's what I'm I'm just leaving a few notes on this. Okay, if you have a closure like closure that accesses a.

C

Packed.

C

Field.

C

um

A

Let.

C

X.

C

Equals.

C

This could conceivably be safe because the closure de-sugaring will move.

C

And the act field is never actually borrowed, however, we choose to still truncate and hence make this unsafe for consistency and lack of surprise.

C

If the closure were in line into its collar, for example, you would get unsafe mornings or unsafe. You would get errors because of the staple around for users is to add light people.

D

All right, great.

C

um So where were you.

B

uh I was gonna, ask one question about uh the parent: pr do we want to have test switch?

B

Sorry excuse me uh that print out the mirror and we make sure that the fake leaves are added accordingly, and if so, is there an example? I feel like I've seen something similar, but I couldn't find anything outside of mirror optimization.

C

um Mirror opt is the kind I believe mirroropt is the way to test that. um Oh.

A

Okay, and do we want that.

A

I'm torn sort.

C

Of, on the other hand, mirrorop tests.

A

I don't know.

C

They're a drag, it would be better if we.

C

We should be able to observe the fake reads being added or not added right, because the reason we're adding them is to make sure that some code doesn't compile specifically.

A

I think.

C

Code that doesn't match on an uninitialized network.

B

I think.

C

Never yeah value of type, never.

B

Yeah, so I think my my concern was that this should have showed up when, like I'm, assuming our testing suite has that. But at the same time I think.

C

I wouldn't assume that we have that in a closure.

B

Yeah, I think that was what I was thinking as well, because I think there was a point where roxanne removed the fake reads and it worked so, I think maybe adding a test case with yeah.

C

We definitely want at least some tests that fails when.

A

These are.

C

Removed, yes, um I was trying to figure out. You saw my comment about whether the fake weeds were being added at the right place.

B

I saw some of them. I haven't gone through. All of these give me one second I'll, take a look.

C

A lot of them were like silly knits, but I was trying to figure out. Can it happen that you have one second.

C

Okay, so what I was trying to imagine is, I think we don't.

C

We add fake reads for everything that gets matched right. uh Yes, whether or not we also capture it in some other way,.

A

Yes, I think yes, so if.

C

We, for example, move something and match it.

C

Then I think we'll see a problem, because the fake read like the cat. The first thing we do is move it to a temporary variable, and then we do a fake read on that original location, and so the bar checker should be whiny about this.

B

Given that I'm basing this off how things were written before, I would assume this is fine, because before this we were introducing fake reach for everything that was matched on right.

C

On one.

C

Second,.

C

Sorry, uh what were you saying.

B

So if I understand the existing code correctly, we introduce a fake read, regardless of if things are matched right.

C

I think that I think that what we said was that we would always add a fake need. I think I initially proposed that we should add fake reads only if it's not used some other way and then I thought we don't need to do that and we can just always introduce fake weeds for anything that gets hatched yes and and if you're asking does match, always introduce a fakery. The answer is yes, yeah, so I think I still think that's all true.

C

I just think that putting the fake weeds in the location where they are might lead to incorrect borrow check errors.

B

Before.

C

We do the captures.

B

Wait where do they get added in the cfg? Let me see I I see your point.

C

Are they added between the captures and actually constructing the closure.

B

Oh yeah, we can do them right before and then.

C

I would first want to have a test that fails. That's.

B

Yeah, no, that's fair. Give me one second.

C

Oh.

B

I stopped sharing my screen I'll, probably hold on to that. It's not good up there, so we have this should be and as play as our value, I think yeah. This is another value.

B

uh Wait! Oh I closed it. That's what happened!

B

Yeah! I see. I see this happens when we.

B

Actually, I don't think this is what happens so we introduce them into the cfg and then we construct the closure, but this is just the bottom. Checker doesn't run here right. This is just building the mere expressions for.

C

Them that's gonna, be gonna yeah, that's gonna generate the mirror.

B

All right, that's gonna, generate some some degree of mirror because, yes, we're doing blocks it might.

C

It might be that you, in order to observe this, you have to.

C

You you might need to do a mute, a move might not trigger it, because if you have a move, it's going to be a place. So this is there's no mirror generated here. What I think would trigger it is, if you did a mute, borrow.

B

Okay hold on. Let me start.

C

Right at.

B

That I'm hearing something I have to check on but yeah I'll start writing a test.

B

Here.

B

Foreign.

B

Oh, that was a bad.

B

Idea.

B

So I realized we do have a test which does mute borrow well, it does a unique.

C

Test is.

B

So this is a test double struct. uh This is basically so it calls into this method, which is which takes a mute, ammu itself.

A

All.

B

We call the match on that m itself. It's like the. We pass the immutable reference to self into this.

C

Yeah, but that's not quite right, because you need to match on the thing that is also being mute borrowed. Do you have a build of this by any chance? I do not have a local building now, okay, I could start a build. um um Where can I I'll send it on zulu? This is, I think, a test that would work all right.

B

I'll I'll base this on the vr, maybe just add it on the vr. So that's just documented.

C

uh Okay, what's the name of the pr.

B

It's eight two, five, three six.

A

Eight two and five six okay, so.

C

Okay example test that, I think will fail, as is, um I think, if you did something like.

A

This.

A

Do you see my comment now.

B

uh So that will create a mute reference to x and we match on x and that will work.

C

The main difference between this and what you showed me is that the match and the mute reference are both the same.

A

I actually.

C

um As opposed to it being some expression that happens to involve x,.

B

I see okay, I yeah. I do not have a build of this. Unfortunately, uh maybe.

C

um Can ping roxanne if she has one lying.

B

I I message her: if she was joining, she hasn't replied yet.

C

Yeah, no I'm just gonna ping around zulu, okay, when when she is around okay,.

B

Yeah yeah, I'm pretty certain she's working on this.

B

um Yeah also uh livestream responded on the introducing a new capture uh clause and.

B

I think their suggestion also works to some degree, not if I think about it correctly, so they suggested using this as the oh, oh, I am I'll just type it out where.

D

They see this.

B

So this will still work, because this is an expression which will force an immutable borrow of f on its entirety.

A

uh Yeah well.

B

Not yeah, and so they suggested that this is what they would prefer.

B

I.

B

Like regard, I think this is well, it might.

A

Be incorrect.

B

The reasoning which is drop the variable at the end.

C

That that reasoning is incorrect, yeah, but that that's not. First of all, I don't know who that is, I don't think they're on the libs team, but secondly, uh that's really a question of what the macro expands to yes, which I don't really care about. What I do care about is I mean as long as it works.

C

What I do care about is.

B

Where it lands- and they.

C

Like how users think about it, and I feel like users, I guess I will say I agree that that is a better de-sugaring or I agree that if that's not what I meant, I don't think it matters which one is the de-sugaring, but I think that's a better if I were a user I'd. Rather I find that less confusing than yes exactly. I still think I would find it quite heavy.

B

It is, I think it really comes down to user having to understand capture analysis to know why that's working, I.

C

Think that to some degree a better choice, the captures, I think, that's maybe a better expansion not for the reason that they gave, but because it's a full statement.

B

Yes and.

C

Thus you couldn't use captures x in some weird place like if you expand to drop, you can write things like, let z equals captures x and z will become unit or whatever yeah. That's dumb as it is. The captures macro still allows you to put it in all kinds of places that you, you can still put it anywhere.

C

A statement goes which we might rather that you can't, but I don't think it's worth worrying about, um but okay, okay, anyway, this is good that you bring us up because, on my mind, was that we need to do a write-up. We need to like make a real proposal here.

C

uh Okay- and I was gonna- ask- I was probably going to do that unless you want to.

B

uh Proposal about what- uh and I.

C

Want to make I mean I want like a discussion with lipstein yeah. I want to write up like not rfc, because it's not that big of a thing, but a mini rfc about adding this macro and that sort of explains the context. You know why it needs to be there and then that way and then have the libs team do a like serve discussions.

C

You know yeah.

B

How big does this need to be, because I probably won't have too much time again over the just.

C

uh It doesn't have to be too big. I think you know.

B

I can write a draft and we can work from that. Yeah yeah.

C

I didn't expect it to be more than let's say if you I'm trying to think how to measure it. It's productive. You know. I just think it can be some bullet points. It just has to be structured in a way that okay, you know. Okay, captures the essential information, yeah.

B

I I think yeah I can pick up the reason from uh does lip steam, uh I'm assuming they care about what this gets d sugar to at the end, because it is ending in standard lab.

C

I would certainly include the de-sugaring, and I think I would probably adopt this- let one I think, that's better for the reason. Yes, yeah. That's an example of the kind of thing I would like to include in the write-up is we chose this desugaring because it doesn't allow you to do this or that, but note that you can still captures and I'll leave. uh I guess I would also if you, if you want to write up just start a hackmd and write some thoughts. I can add a few things later. Yeah.

B

I'll leave a message apply to this user. I'm not sure, if not.

C

One other thing we could do, but I think I don't like it is, you could imagine having the captures macro.

C

Replace the closure be like capturing closure or something, but I don't like that. It's just really invasive and complicated.

B

I think that is going. I if I understand correctly you're, suggesting something like something something list of variables and then the actual closure here of starch yeah, more or less.

C

Yeah go ahead, there's I I like and don't it might actually be a better choice, but I also don't like it, but um the reason it might be a better choice is if we think in the future, there's a lot of stuff. You could do with that macro.

C

Yes, that you can't do with the macro inside the closure body. So actually it probably. I think I just convinced myself that, even though I don't like it, it might be a better choice. This is.

A

Why.

B

uh I'll I'll I'll create a hackam, they add the points we have right now and I'll. So I think this is similar to the discussion. We had a while back right where we want a capture clause, and I'm assuming this is the the macro is basically a hack around adding a capture clause to the language directly or am I a misunderstanding.

C

I'm coming back around to like.

C

Maybe this wants to be. Maybe we do even want an rfc, but the let underscore equals ampersand is like good enough that we could get by with that.

B

It also comes down. I mean there, of course, going to be some users who will wonder what's happening inside that thing, but my like, I think one thing we do want to make clear with the macro is that it doesn't return the variable back, so so that people don't try to let x equals capture x and stuff, like that.

C

Yeah, I guess I still like the macro.

C

You know what don't worry about it. I feel like I'm going to want to do enough I'll just do the right, I kind of feel like I'm, going to wind up doing it anyway. If you don't have that much time, and I have various thoughts I want to put in there so.

B

Okay, uh I'll just leave a message for this user, which is like drop. X1 drop. The variable immediately.

B

But let underscore equals ampersand x as a cleaner solution and since it's a statement it stretches the macro.

A

From being used- and I'm not crazy about.

A

uh Expressions.

C

I guess that.

C

Permitting.

C

Even if we added standard marker capture.

C

And we later wanted to add capture clauses or something else we can always.

B

We can always turn this into expression right, like the thing inside it since, like I think what we were discussing was instead of an ident. If you have an expression here,.

C

Yeah, but it doesn't like give you the main the use case, I'm really interested in that. I don't think you can do with this macro is when you want to capture clones of things.

C

Oh, I should have rc's and you want to take a clone of the rc and not, and um if you had a macro that wrapped the closure, then it could expand to like a block that does let x equals x, dot clone that y equals y dot, colon and then the closure, and so it could actually handle a bunch of cases that are more interesting.

B

Yeah.

C

But uh on the other hand it looks, I don't know it's going to be more messy.

B

Also, is there anything else that I'm missing here.

C

Oh wait a minute. We allow statements where we allow attributes on closed statements.

A

We do allow attributes- employers, yes, we're leveraging. This is that stable.

B

uh The attribute that we are using right now is for debugging only.

C

Yeah yeah, not the exact one we're using, but attributes in that position.

B

They are stable to some degree. Yes, I think they get weird when you use ace enclosures because they don't have an actual like. If I do just do an async block be sugars to an ace enclosure. I think that would that cause problems can.

C

We do procedural macros.

B

uh Maybe I have never implemented one, so I'm not sure, uh let's just try this. If I were to call this an async block and I'll just call that a weight here.

B

Oh on this, I have a feeling this would not print out the capture analysis. Oh oh wait! Why am I on 2015.

B

Weird.

A

uh Oh.

C

My expressions are experimental, sorry 701, I said it says: attributes on expressions are experimental.

A

Oh, it doesn't say that.

B

I have a feeling this might: okay, I'm gonna open the tracking issue.

C

I'm looking, I think I mean I think I know why it's because of precedence, but we could plausibly stabilize attributes in this place.

A

I'm asking.

C

Is the syntax that we really want is probably a captured attribute on the closure?

C

Yes, something like that uh yeah. That would be that's nice, like that's. Actually, nice.

B

Yes, I think that's what I was trying to yeah. So if you do this over here, it's it doesn't print anything.

C

But that's.

B

Even though does this not resolve to a claudia at the end, amazing walk.

C

um What's a generator.

B

Okay: well, generator are closures by.

C

Yeah, that's that's just your like wacky little.

B

Okay,.

C

I mean we can fix that. I don't know what's going on there, but I can imagine what my async block. I think generic resolves to like an expression that has a closure in it somewhere, but it isn't a closing.

B

By itself,.

C

Like the reason.

B

I'm, like I know, async blocks, are definitely affected by our rfc in a nice way, because I tested it out because someone asked if those work.

C

Oh interesting, okay, I see so you're saying you can't test it with this feature.

B

I I can test the feature is working. I can't print the analysis out for it. Can you try this.

C

Put well send me that url.

B

uh Hold on one second I'll: just do it like it's hours, hours and I'll just be near. I guess.

C

However, okay, because.

B

I'll find the time I tested this and.

A

Hold on.

C

Captured no, this didn't work either. I guess.

A

Okay,.

C

So I was trying to see if you could do.

C

If you could put a.

C

Inner attribute, oh, I see, but it didn't work. I don't know why.

B

So this is acing things working well with our feature and if I comment this out, they stopped oh.

D

It's probably on the block. That's probably why.

B

uh You've gone yeah, so it makes me weirdly happy. I can see things working. I I'm like it's. uh It's.

D

Really cool yeah. I know it's really cool. I mean.

B

We can at least test.

D

That it works yeah, it's like we.

B

Should I.

D

Am this does.

B

Not work, if I recall correctly, but I'll.

C

No, that doesn't work, but there should we. We have to look at the de-sugaring regardless. I think, okay, anyway, let's I think I know what I want to propose for the captures macro I'll have to investigate its feasibility, but I think it's the right thing to do.

B

I I guess I've suggested this a couple times already, but yeah. I think the attributes will come down to sim uh similar to, I guess the c, plus or style of just like listing having a set of things at the start sure but uh like like in a nice way.

C

Yeah, but that that sounds right. Let me I'm just going to show and do look what I think we should do all.

B

Right one: second: oh no, not.

B

This, oh we that remind me. I have one more question that I'll ask after this.

B

Yeah, uh and are we allowing something like where x, y and z are our expressions, so I can say x equals x, dot, clone y equals y or clone, or is that going or is that a possible extension that we might go for.

C

uh I would probably do that as a future extension. Okay, I would definitely want to allow that um I just don't know I'd rather like design it in peace, okay and only yeah single letters for now single identifiers.

B

Okay, no that's fair.

C

Questions like.

C

Yeah anyway, there are interesting questions.

C

The nice thing about this is, it can become it's totally extensible.

C

It looks decent, it can be implemented as a procedural macro and it can become syntax or I don't know it can scale up to whatever we need it to do.

B

How easy is this to work with rust? Actually rust fix will probably be easier because you don't need to deal with adding braces or anything then yeah.

C

Actually, that's even easier from the I don't know how the precedence works. That's my only vague concern of these stupid attribute expressions like gotta make sure that it binds to the right place. If that makes sense,.

B

Yes, I think from what I was looking into most of the parsers also fairly handwritten, so I don't know how this does end up happening.

C

Yes, um it might not actually work the way I want it to which would be annoying, but it would be easier assuming it does work. It seems like it's actually much easier to do this.

B

This is the nicer syntax, yes, yeah.

C

This is the right syntax. The only problem would be what I see as a possible problem, it's kind of even hard to like make the expression that would be problematic, but it'd be something like this.

A

Can you even do this? How do you do it um wait? What are you trying.

D

uh

C

I don't think you have a pro. I don't think there can be a problem. So the problem I'm concerned about.

A

Is an empty list, we should try what that does.

C

Light parse: we can make it not first.

B

I mean that's, oh if you call the thing at the same time. Oh I I see what you might be doing.

A

My concern.

B

Yes, like it forms an expression and then that acts as a thing on the on.

C

The.

B

Call on the call.

C

This does not build, though you can't write that okay, I don't know what I don't know. If there's any expression you can make, that involves a closure that doesn't involve a parenthesis around the closure. You know.

B

What I mean you cannot I I was using trying to use that recently. You have to put a parenthesis around the closure and the whole thing and then call it to the caller. So.

C

That's actually good for us, because that makes rust fix easier right. Yes, um you just got to stick it there and now now this is much easier than the old rust fix. We don't have to add braces right. Yes,.

B

Like this, uh do we need anything from the land team on this, because we, I know the land team decided on the capture well,.

C

That's kind of what I'm saying like I don't we need to make some formal decision. Yes, I don't know.

B

And I guess all three teams sort of sign off on it: compiler.

C

Yeah, it's kind of this is one of those things that's like at the intersection of laying in libs, but it's going to take a little bit of to make this work is going to be a little funky, because those kind of attributes are not stable, so we'll have to like stabilize them on closures, specifically or at least stabilize this one on closures. I don't know uh I can live with that, but I have to write okay.

B

Okay, I I okay, I don't know how much this changes on the april first, that we want to hit.

C

uh I would uh like don't we have support, I think, for the time being, we should prototype the let underscore equals solution. Okay,.

B

Okay, we can like, I feel, like.

C

You wrote that.

B

Code, didn't you the letter, uh it I mean, that's just like it doesn't. Do the rust fix part anyway, so.

D

Okay,.

B

Yes, it's it's just it just shows up by the suggestion. I don't know if rustrix automatically works fixed does.

C

Automatically apply suggestions but if you're, using the like actual suggestion, api.

B

Maybe I'd have to try it out. I haven't tested that, uh but.

C

I.

B

Don't think that is hard to that one.

C

Is that all the hard work of like figuring out when you need braces and stuff.

B

No, that's not. Okay,.

C

Then then, it probably won't work. There's like an api that you kind of give it a diff. Well, what you do is you give it the old string and a new string in it. Okay,.

B

um

C

Yeah, it might affect our april 1st deadline.

B

Just because that decision needs to also happen.

C

um

A

I feel like, if you can.

B

Have most of the things done, this won't be hard to add on so.

C

Yeah, I think this actually makes it a lot easier because there's a lot less.

B

Grungy.

C

Code to write so I'll try.

B

To move.

C

The decision along, I think this is obviously right. I would be surprised if people nitpick too much.

B

I have one more question that I was trying to. I didn't get any response on and I think uh oh, oh actually I got a response. I did not think that they happened today. Oh okay, you responded all right.

B

Yeah I've.

C

I've been pretty, I think, yeah. You can see what I wrote there. I think the answer is.

C

Sort of a bug like yeah, the docs, I think, are wrong. Yeah, I don't think you can. I think you have to be consistent, but it kind of doesn't matter yes, but if you generated.

D

Sometimes.

C

With downcast, and sometimes without, I suspect, biocheck would possibly consider those disjoint paths I see which one that.

B

Is also possible yeah uh and do they only happen on enums? I'm trying to remember, because I I'm trying to remember what was the bug that triggered the downcast thing funny part is. I wrote the like when I initially did the mirror like conversion, I handle bottle, check doncast the way we do it now and I was like oh it's. I can make the core cleaner because it's not needed uh hold on one second uh yeah. Let me see if I can find the code that triggered the downcast for roxanne one second.

A

um

B

Give me a minute, I don't know if this was just enums uh I'll, ask her and uh I'll it I'll uh I'll I'll bring her on zulu and then I guess she can let her spawn there. It's gonna otherwise have to scroll through the whole bunch of chat, uh uh all right balance on here, all right um and I'll say.

B

Okay,.

B

Are wait, structs won't be affected right, structs are just not, they only have zero variant. Actually, no, no, I uh what we saw was greater than zero. So our.

C

It sounded like from what you wrote. I thought you said that strucks do not have downcast, but single variant. Enums do.

B

uh That is possible, like that, is the chord. Oh, I shared the code. Why was I looking for it? Okay? Yes, that is the yes. That is what we tested it on. uh I think okay can. Actually we can just try it on playground right, because I can use a struct and I can dump mirror on playground if I'm not wrong.

C

You can yes.

B

So if I do this.

C

You're missing the first letter.

B

Yes, uh well, I need to probably turn this into a struct anyway,.

B

Yeah and I'll just I'll just make this a double check. I guess it's just easier to deal with and.

B

That this is looks about right. I guess.

B

Okay, wait will this show downcast projections here and, if so,.

B

Probably should have tested.

A

Whatever it looks like.

B

Yeah yeah I'll just create a new tab just so I don't have to type it over and over and over copy that.

B

No, no, no.

B

All right um that thing.

B

Yeah, I I'm really enjoying the grouping, because now I don't have to maintain multiple windows and stuff okay, I'll just space this here and see how that goes.

C

That's some new chrome feature or something.

B

Yeah.

A

That's a new chrome.

C

Feature I've been into this work, kona highly recommended it's.

B

What thing.

C

Called work kona like okay, rkona and it lets you um it's a plug-in. I have it on firefox, but I think they have it for chrome too. I assume maybe nuts, not too good, and uh it does it gives you workspaces that you can switch between. Oh.

B

I was using.

C

That.

B

Before oh wait, proper workspaces are just like just like containers that firefox offers.

C

No proper workspaces so like when you switched between rust, rust and cs444. It would close all your other tabs and just show you the ones that are really oh.

B

That's really nice.

C

And you can do nice things like pop over to it and say: take these three tabs and put them in a new workspace, because I got distracted.

B

And.

C

Was doing something else and then come you know nice. I use it all the time now.

B

That's that's pretty nice, uh okay, so this is our yeah. It says as point.

C

Look at bb-0.

B

Oh okay, no, oh yeah! I see that I now there's that right.

C

uh Oh okay, yes, that's true yeah that works.

B

Okay, now, if I go back to this one- and I look at it within the closure- uh wait, why did it not generate the oh yeah? That's a closure yeah. It does not do.

C

I think we leave out downcast for strucks, but we keep them for enums right. I think that's a perfectly fine rule and we should just document it.

B

All right I'll.

C

Probably don't need them for single variant, genomes.

B

But like yes like, like it's an infertile pattern, so it would be fine to have a rule. That's that if.

C

There's more than one variant, that would also be a perfectly fine rule and probably a better yeah. I I I don't think that's.

B

Something the spear should do.

C

um

B

Yeah, I think.

C

Yeah, it's a totally diagonal change. Yeah.

B

I'll I'll uh I'll just do a message here.

C

That would probably be a better rule just because it you know it's less mirror.

B

Yeah, uh it doesn't dump in the mirror, uh and it seems like only.

B

It does not uh like the pr can safely handle it, so it's in a without relying on the assumptions. I think fine.

C

Okay, yeah.

B

All right, I think.

A

I think we're.

B

Done I don't have anything else, you have anything else, nope all right. Thank you see. You later see ya.
youtube image
From YouTube: 2021-03-03 RFC 2229

Description

No description was provided for this meeting.
If this is YOUR meeting, an easy way to fix this is to add a description to your video, wherever mtngs.io found it (probably YouTube).