Skip to content

Commit 3706a6b

Browse files
committed
fix: subtypings
1 parent 30cd73d commit 3706a6b

File tree

6 files changed

+20
-17
lines changed

6 files changed

+20
-17
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,10 @@ jobs:
116116
runs-on: ubuntu-latest
117117
steps:
118118
- uses: actions/checkout@v3
119-
- name: Install cargo-spellcheck
120-
uses: taiki-e/install-action@v2
119+
- uses: dtolnay/rust-toolchain@master
120+
with:
121+
toolchain: ${{ env.rust_min }}
122+
- uses: taiki-e/install-action@v2
121123
with:
122124
tool: cargo-spellcheck
123125
- run: cargo spellcheck --code 1

src/callback.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -294,12 +294,13 @@ impl<'a> Request<'a> {
294294
unsafe { &mut *(opt as &mut dyn Erased as *mut dyn Erased as *mut Self) }
295295
}
296296

297-
pub(crate) fn new_action<'t, 'p, P: Property<'p>>(
298-
val: &'t mut Tagged<'p, Action<P>>,
299-
) -> &'t mut Self {
300-
unsafe { &mut *(val as &mut dyn Erased as *mut dyn Erased as *mut Self) }
297+
pub(crate) fn new_action<'p, P: Property<'p>>(
298+
val: &'a mut Tagged<'p, Action<P>>,
299+
) -> &'a mut Request<'p> {
300+
unsafe { &mut *(val as &mut dyn Erased as *mut dyn Erased as *mut Request) }
301301
}
302302
}
303+
303304
impl<'a> Request<'a> {
304305
fn is_satisfy<P: Property<'a>>(&self) -> bool {
305306
self.0.is::<tags::RefMut<Satisfy<P>>>()

src/channel_bindings.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ mod tests {
6464
.unwrap();
6565

6666
let mut tagged_option = Tagged::<'_, NoValidation>(None);
67-
6867
let validate = Validate::new::<NoValidation>(&mut tagged_option);
6968
session
7069
.get_cb_data("this-cb", validate, &mut |cb| {
@@ -74,6 +73,7 @@ mod tests {
7473
})
7574
.unwrap();
7675

76+
let mut tagged_option = Tagged::<'_, NoValidation>(None);
7777
let validate = Validate::new::<NoValidation>(&mut tagged_option);
7878
let e = session
7979
.get_cb_data("blahblubb", validate, &mut |_cb| {

src/context.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ impl<'a> Demand<'a> {
116116
}
117117
}
118118

119-
pub fn build_context<'a>(provider: &'a dyn Provider) -> &'a Context<'a> {
119+
pub fn build_context<'a, 'b>(provider: &'a (dyn Provider<'b> + 'a)) -> &'a Context<'b> {
120120
unsafe { &*(provider as *const dyn Provider as *const Context) }
121121
}
122122

src/session.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -245,11 +245,11 @@ mod provider {
245245
}
246246
}
247247

248-
impl<'a> MechanismData<'a> {
248+
impl<'a, 'b> MechanismData<'a, 'b> {
249249
fn new(
250250
callback: &'a dyn SessionCallback,
251251
chanbind_cb: &'a dyn ChannelBindingCallback,
252-
validator: &'a mut Validate<'a>,
252+
validator: &'a mut Validate<'b>,
253253
mechanism_desc: Mechanism,
254254
side: Side,
255255
) -> Self {
@@ -302,14 +302,14 @@ mod provider {
302302
#[cfg(any(feature = "provider", feature = "testutils", test))]
303303
pub use provider::Session;
304304

305-
pub struct MechanismData<'a> {
305+
pub struct MechanismData<'a, 'b> {
306306
callback: &'a dyn SessionCallback,
307307
chanbind_cb: &'a dyn ChannelBindingCallback,
308-
validator: &'a mut Validate<'a>,
308+
validator: &'a mut Validate<'b>,
309309
session_data: SessionData,
310310
}
311311

312-
impl MechanismData<'_> {
312+
impl MechanismData<'_, '_> {
313313
pub fn validate(&mut self, provider: &dyn Provider) -> Result<(), ValidationError> {
314314
let context = build_context(provider);
315315
self.callback
@@ -336,7 +336,7 @@ impl MechanismData<'_> {
336336
where
337337
T: Property<'a>,
338338
{
339-
let mut tagged = Tagged::<'a, Action<T>>(Some(value));
339+
let mut tagged = Tagged::<'_, Action<T>>(Some(value));
340340
self.callback(provider, Request::new_action::<T>(&mut tagged))?;
341341
if tagged.is_some() {
342342
Err(SessionError::CallbackError(CallbackError::NoCallback(
@@ -408,7 +408,7 @@ impl MechanismData<'_> {
408408
}
409409
}
410410

411-
impl fmt::Debug for MechanismData<'_> {
411+
impl fmt::Debug for MechanismData<'_, '_> {
412412
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
413413
f.debug_struct("MechanismData").finish()
414414
}

src/validate.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ impl Validation for NoValidation {
129129
/// mechanism.
130130
pub struct Validate<'a>(dyn Erased<'a> + 'a);
131131
#[cfg(any(test, feature = "provider", feature = "testutils"))]
132-
impl Validate<'_> {
133-
pub(crate) fn new<'opt, V: Validation>(opt: &'opt mut Tagged<'_, V>) -> &'opt mut Self {
132+
impl<'a> Validate<'a> {
133+
pub(crate) fn new<'opt, V: Validation>(opt: &'opt mut Tagged<'a, V>) -> &'opt mut Self {
134134
unsafe { &mut *(opt as &mut dyn Erased as *mut dyn Erased as *mut Self) }
135135
}
136136
}

0 commit comments

Comments
 (0)