权限没有,则隐藏 function forum_list_access_filter($forumlist, $gid, $allow = 'allowread') { global $grouplist; if (empty($forumlist)) return array(); if (1 == $gid) return $forumlist; $forumlist_filter = $forumlist; $group = $grouplist[$gid]; foreach ($forumlist_filter as $fid => $forum) { if (empty($forum['accesson']) && empty($group[$allow]) || !empty($forum['accesson']) && empty($forum['accesslist'][$gid][$allow])) { unset($forumlist_filter[$fid]); } unset($forumlist_filter[$fid]['accesslist']); } return $forumlist_filter; } function forum_filter_moduid($moduids) { $moduids = trim($moduids); if (empty($moduids)) return ''; $arr = explode(',', $moduids); $r = array(); foreach ($arr as $_uid) { $_uid = intval($_uid); $_user = user_read($_uid); if (empty($_user)) continue; if ($_user['gid'] > 4) continue; $r[] = $_uid; } return implode(',', $r); } function forum_safe_info($forum) { //unset($forum['moduids']); return $forum; } function forum_filter($forumlist) { foreach ($forumlist as &$val) { unset($val['brief'], $val['announcement'], $val['seo_title'], $val['seo_keywords'], $val['create_date_fmt'], $val['icon_url'], $val['modlist']); } return $forumlist; } function forum_format_url($forum) { global $conf; if (0 == $forum['category']) { // 列表URL $url = url('list-' . $forum['fid'], '', FALSE); } elseif (1 == $forum['category']) { // 频道 $url = url('category-' . $forum['fid'], '', FALSE); } elseif (2 == $forum['category']) { // 单页 $url = url('read-' . trim($forum['brief']), '', FALSE); } if ($conf['url_rewrite_on'] > 1 && $forum['well_alias']) { if (0 == $forum['category'] || 1 == $forum['category']) { $url = url($forum['well_alias'], '', FALSE); } elseif (2 == $forum['category']) { // 单页 $url = ($forum['threads'] && $forum['brief']) ? url($forum['well_alias'] . '-' . trim($forum['brief']), '', FALSE) : url($forum['well_alias'], '', FALSE); } } return $url; } function well_forum_alias() { $forumlist = forum_list_cache(); if (empty($forumlist)) return ''; $key = 'forum-alias'; static $cache = array(); if (isset($cache[$key])) return $cache[$key]; $cache[$key] = array(); foreach ($forumlist as $val) { if ($val['well_alias']) $cache[$key][$val['fid']] = $val['well_alias']; } return array_flip($cache[$key]); } function well_forum_alias_cache() { global $conf; $key = 'forum-alias-cache'; static $cache = array(); // 用静态变量只能在当前 request 生命周期缓存,跨进程需要再加一层缓存:redis/memcached/xcache/apc if (isset($cache[$key])) return $cache[$key]; if ('mysql' == $conf['cache']['type']) { $arr = well_forum_alias(); } else { $arr = cache_get($key); if (NULL === $arr) { $arr = well_forum_alias(); !empty($arr) AND cache_set($key, $arr); } } $cache[$key] = empty($arr) ? '' : $arr; return $cache[$key]; } ?>rust - Forcing 2 different versions of a crate when patching - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

rust - Forcing 2 different versions of a crate when patching - Stack Overflow

programmeradmin9浏览0评论

I want to patch getrandom crate in my workspace, with 0.2.12 version as following:

[patch.crates-io]
getrandom = { git = ".git", rev = "8ffd43e" }

Before trying to patch, my Cargo.lock had the 0.2.15 version of this crate. When I patched it and tried to run cargo update -p getrandom, I encountered a problem:

warning: Patch `getrandom v0.2.12 (.git?rev=8ffd43e#8ffd43e6)` was not used in the crate graph.

When I played around with the Cargo.lock here is what I got eventually:

 ... required by package `libp2p-gossipsub v0.47.0`
    ... which satisfies dependency `libp2p-gossipsub = "^0.47.0"` (locked to 0.47.0) of package `libp2p v0.54.1`
    ... which satisfies dependency `libp2p = "^0.54"` (locked to 0.54.1) of package `my_project v0.1.0 (/path/to/my_project)`
versions that meet the requirements `^0.2.15` are: 0.2.15

As far as I understand, libp2p-gossipsub crate which is imported by the libp2p crate requires 0.2.15 version of getrandom.

How can I resolve this issue? I am OK to having 2 different versions of getrandom in my codebase, and not applying patch to libp2p.

I want to patch getrandom crate in my workspace, with 0.2.12 version as following:

[patch.crates-io]
getrandom = { git = "https://github/madsim-rs/getrandom.git", rev = "8ffd43e" }

Before trying to patch, my Cargo.lock had the 0.2.15 version of this crate. When I patched it and tried to run cargo update -p getrandom, I encountered a problem:

warning: Patch `getrandom v0.2.12 (https://github/madsim-rs/getrandom.git?rev=8ffd43e#8ffd43e6)` was not used in the crate graph.

When I played around with the Cargo.lock here is what I got eventually:

 ... required by package `libp2p-gossipsub v0.47.0`
    ... which satisfies dependency `libp2p-gossipsub = "^0.47.0"` (locked to 0.47.0) of package `libp2p v0.54.1`
    ... which satisfies dependency `libp2p = "^0.54"` (locked to 0.54.1) of package `my_project v0.1.0 (/path/to/my_project)`
versions that meet the requirements `^0.2.15` are: 0.2.15

As far as I understand, libp2p-gossipsub crate which is imported by the libp2p crate requires 0.2.15 version of getrandom.

How can I resolve this issue? I am OK to having 2 different versions of getrandom in my codebase, and not applying patch to libp2p.

Share Improve this question asked Jan 15 at 0:42 Ahmet YazıcıAhmet Yazıcı 7446 silver badges19 bronze badges 2
  • What's else depends on getrandom other than libp2p? Do you have getrandom in the [dependencies] section? – aedm Commented Jan 15 at 13:01
  • @aedm I have sub-dependencies of libp2p that uses getrandom, e.g. quinn-proto. But as an individual as far as I can see it is only rand_core and libp2p. – Ahmet Yazıcı Commented Jan 18 at 18:23
Add a comment  | 

1 Answer 1

Reset to default 3

I want to patch getrandom crate in my workspace, with 0.2.12 version as following: …

Before trying to patch, my Cargo.lock had the 0.2.15 version of this crate.

libp2p-gossipsub crate which is imported by the libp2p crate requires 0.2.15 version of getrandom.

In this situation, you must provide patched code which claims in its Cargo.toml to be version 0.2.15 or newer. There is no way to override Cargo in this matter.

I am OK to having 2 different versions of getrandom in my codebase

There is no way to override Cargo’s one-major-version policy, either; in order to add a different minor version you must give it a different package name.

发布评论

评论列表(0)

  1. 暂无评论